  | 
              
	              
	                
  
    
	 
        sum ตัวเลขจากการ union จาก 2 บรรทัดให้เหลือ 1 บรรทัด (อธิบายไม่ถูก มีภาพประกอบ)     | 
   
  
    |   | 
   
 
 
 
              
  
          
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 sum(ฟิวที่ต้องการ) ละ group by รหัส ได้มะ                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-19 15:39:04 | 
                        By :
                            progamer2000 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ไม่ได้ค่ะ  
 
ขออภัยนะคะ ไม่กล้าลงโค้ดเต็มๆ  
 
Code (PHP) 
รหัส,
ISNULL(SUM(round(เดบิต.ยอดปัจจุบัน,2)),0.00)เดบิต.ยอดปัจจุบัน,
ISNULL(SUM(round(เครดิต.ยอดปัจจุบัน,2)),0.00)เครดิต.ยอดปัจจุบัน,
	0 ยอดยกมา
from ......................
where ประเภท=101 
group by รหัส
union 
รหัส,
	0 เดบิต.ยอดปัจจุบัน,
	0 เครดิต.ยอดปัจจุบัน,
	SUM(ISNULL(round(DrAmnt,2),0.00) - ISNULL(round(CrAmnt,2),0.00))ยอดยกมา
from ......................
where ประเภท=105
group by รหัส
                         
               
               | 
             
            
              
			                
  ประวัติการแก้ไข 2015-02-19 16:13:00 2015-02-19 16:14:56              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-19 16:12:15 | 
                        By :
                            AnnYZaa | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 แต่ละ table sum กันก่อนมา union ได้ไหมฮะ ?                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-19 16:31:28 | 
                        By :
                            progamer2000 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                   ตอบความคิดเห็นที่ : 2 เขียนโดย : AnnYZaa เมื่อวันที่ 2015-02-19 16:12:15 
รายละเอียดของการตอบ ::
  เห็น 101 และ 105 ก็พอจะเดาชื่อโปรแกรมออก ถึงคุณจะลง Query เต็ม เจ้าของโปรแกรมเขาก็ไม่ว่า 
และมันก็ไม่มีประโยชน์สำหรับผมแม้แต่นิดเดียว (วิธีคิดของผมและโปรแกรมของเขามันคนละแนวทางกัน)
  
 
 
ลองทำความเข้าใจดูครับ CTE (Common Table Expression) 
 
Code (SQL) 
DECLARE @ASSINASSOUT TABLE (ID int, PurchaseCost money, PurchaseDate Date, Period int, Savage decimal(6,2))
INSERT INTO @ASSINASSOUT SELECT 1, 25000, '2014-12-29', 5*12, 20.0/100 
;WITH cte
AS (
	SELECT     -- anchor member
		CAST(0 AS int) AS m, PurchaseCost AS PurchaseCost, PurchaseDate As PurchaseDate, 
		Period AS Period, PurchaseDate AS StartdayOfMonth,
		CAST(DATEADD(mm, DATEDIFF(mm, 0, PurchaseDate) + 1, 0) -1 AS DATE) AS LastdayOfMonth,
		var00 AS DayDiff, CAST(((((PurchaseCost-1) * (20*1.0/100))/var02) * var00) AS money) AS DepreAmount,
		PurchaseCost AS BookValue, CAST(0 AS money) AS AccumDepre, CAST(DATEPART(dy, CAST(YEAR(var01) AS CHAR(4)) + '-12-31') AS int) AS DaysOfYear
    FROM @ASSINASSOUT CROSS APPLY (SELECT var00 = CAST(DATEDIFF(Day, PurchaseDate, DATEADD(mm, DATEDIFF(mm, 0, PurchaseDate) + 1, 0) -1) + 1 AS int),
                                     var01 = CAST(DATEADD(mm, DATEDIFF(mm, 0, PurchaseDate) + 1, 0) -1 AS DATE),
                                     var02 = CAST(DATEPART(dy, CAST(YEAR(CAST(DATEADD(mm, 
                                                  DATEDIFF(mm, 0, DATEADD(mm, 0, PurchaseDate)), 0) AS Date)) AS CHAR(4)) + '-12-31') AS int)) a	
    UNION ALL	
	SELECT     -- recursive member
		m + 1, PurchaseCost, PurchaseDate, Period, 
		var11 AS StartdayOfMonth,
		CAST(DATEADD(mm, DATEDIFF(mm, -1, DATEADD(mm, m + 1, PurchaseDate)), 0) - 1 AS Date) AS LastdayOfMonth, var10 AS DaysDiff,
        CASE m + 1 WHEN Period THEN DepreAmount ELSE CAST((PurchaseCost-1) * (20*1.0/100)/var12 * var10 AS money) END AS DepreAmount,
		CASE m + 1 WHEN Period THEN CAST(0 AS money) ELSE BookValue - DepreAmount END AS BookValue,
		CASE m + 1 WHEN Period THEN AccumDepre + BookValue ELSE AccumDepre + DepreAmount END AS AccumDepre,
		DATEPART(dy, CAST(YEAR(var11) AS CHAR(4)) + '-12-31') AS DaysOfYear
	FROM cte CROSS APPLY (SELECT var10 = DATEDIFF(Day,DATEADD(mm, DATEDIFF(mm, 0, DATEADD(mm, m + 1, PurchaseDate)), 0),
	                                     DATEADD(mm, DATEDIFF(mm, -1, DATEADD(mm, m + 1, PurchaseDate)), 0) - 1 ) + 1,
	                             var11 = CAST(DATEADD(mm, DATEDIFF(mm, 0, DATEADD(mm, m + 1, PurchaseDate)), 0) AS Date),
	                             var12 = CAST(DATEPART(dy, CAST(YEAR(CAST(DATEADD(mm, 
	                                          DATEDIFF(mm, 0, DATEADD(mm, m + 1, PurchaseDate)), 0) AS Date)) AS CHAR(4)) + '-12-31') AS int)) b 
	WHERE m < Period -- terminator 
	) 
	SELECT * FROM cte
                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-19 16:55:24 | 
                        By :
                            หน้าฮี | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ผลลัพธ์ของ Query ด้านบน 
 
  
 
ลองทำความเข้าใจดูครับ                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-19 16:57:30 | 
                        By :
                            หน้าฮี | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	     
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 เอามาลงเถอะครับจะได้่ช่วยได้ อย่าไปสนใจพวก หมูหมากาไก่ที่ ชอบแขวะ แต่ไม่ช่วย 
 
ผมช่วยทุกคน อาจจะมีแขวะมีเหน็บบ้าง ก็บางครั้ง แต่ก็เพื่อประโยชน์ของ ผู้ถามนะครับ 
คือบางคนต้องตีต้องทุบถึงจะรู้สึกอะครับ แค่พูดบอกอย่างเดียวไม่ค่อยรู้สึกรู้สา 5555 
เด็กแต่ละคนต้องใช้วิธีการต่างกัน เพื่อให้ได้ผลลัพธ์ตามต้องการ 
 
เข้าเรื่องคำสั่งข้างล่าง ควรจะมี AS หรือเปล่าครับ mssql รู้สึกต้องมี as นะครับ 
Code (SQL) 
ISNULL(SUM(round(เดบิต.ยอดปัจจุบัน,2)),0.00)เดบิต.ยอดปัจจุบัน,
  
แก้เป็น 
Code (SQL) 
ISNULL(SUM(round(เดบิต.ยอดปัจจุบัน,2)),0.00) as เดบิต.ยอดปัจจุบัน,
  
 
ปล.มี error อะไรหรือเปล่าครับ 
 
ปล.อีกที่น่าจะเป็นแบบนี้ 
Code (SQL) 
round( SUM( ISNULL(เดบิต.ยอดปัจจุบัน, 0)),2) as เดบิต.ยอดปัจจุบัน,
                         
               
               | 
             
            
              
			                
  ประวัติการแก้ไข 2015-02-19 17:37:16 2015-02-19 17:40:32              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-19 17:35:42 | 
                        By :
                            Chaidhanan | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	     
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 เอารวมกันแล้วประเภทมันจะเลือกจากเงือนไขอะไรคับ เหมมือนที่ยกตัวอย่างมา 101,105 รวมกันได้ 105 ใช้เงื่อนไขอะไร ถึงได้ 105 ครับ รวมกันไม่ไม่น่าอยาก นะ แต่ประเภทที่มันจะโชว์ใช้เงื่อนไขอะไร อะ 
รวมกันแค่ตัดประเภทแล้ว group by รหัสก็ได้แล้ว ครับแต่ปัญหาอยู่ที่ประเภท                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-20 09:38:45 | 
                        By :
                            gaowteen | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	     
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 งั้นก็ ตัด ประเภทออก เอา select ครอบอีกชั้น แล้ว sum ครับ group by รัส                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-20 10:10:05 | 
                        By :
                            gaowteen | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ผมอ่านโค๊ดแล้วงง นะครับ คือ บางตารางที่อ้างอิ่งก็ไม่มี ชื่อฟีลด์ สำหรับ select หรือ อยู่ใน where ใน group  
ที่เห็น ก็มี EMAcc GLDT ตัวอื่นที่ join เช่น EMDept, EMJob, EMBrch ไม่เห็นได้ใช้ 
 
ลองดูใหม่นะครับ ผมเอา จากตารางที่เห็นข้อมูล มาคิวรี่ แล้วไปประยุกต์เอาเองนะครับ 
เป็นรายการ เฉพาะ GLDT.DrAmnt และ GLDT.CRAmnt เท่านั้น เพราะผมไม่เห็นข้อมูล ของอันอื่น 
Code (SQL) 
SELECT
	EM.AccCode,
	EM.AccName,
	ROUND( SUM ( ISNULL(GL.DrAmnt, 0) ), 2) as Dr,
	ROUND( SUM ( ISNULL(GL.CrAmnt, 0) ), 2) as Cr,
FROM EMAcc as EM
LEFT OUTER JOIN GLDT as GL
	ON GL.AccID = EM.AccID
		AND GL.DocuStatus = 'N'
		AND GL.DocuType IN (501)
		AND CONVERT(VARCHAR(8),GL.DocuDate,112) between '20140801' AND '20140801'
		AND GL.BrchID = 1
GROUP BY EM.AccCode, EM.AccName
  
 
ถ้าเห็นตารางดิบ ด้วยจะทำให้เข้าใจมากกว่านี้                        
               
               | 
             
            
              
			                
  ประวัติการแก้ไข 2015-02-20 10:26:56              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-20 10:25:45 | 
                        By :
                            Chaidhanan | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 Code (SQL) 
;WITH cte1
AS 
(
SELECT	EMAcc.AccID,
	EMAcc.AccCode,
	EMAcc.AccName,
	EMAcc.AccNameEng,
	round( SUM( ISNULL(GLDT.DrAmnt, 0)),2) as DrAmntCurr,
	round( SUM( ISNULL(GLDT.CrAmnt, 0)),2) as CrAmntCurr,
	0 Beginn, 'หอยอ้า' AS Sex
FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
		AND (GLDT.DocuStatus = 'N')
		AND (GLDT.DocuType IN (501))
		AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) between '20140801' AND '20140801')
		AND ((GLDT.BrchID = 1) OR (1 = 0)))
	LEFT OUTER JOIN EMJOb ON (GLDT.JobID = EMJOb.JobID)
	LEFT OUTER JOIN EMDept ON (GLDT.DeptID = EMDept.DeptID)
	LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
WHERE   EMAcc.AccControlFlag = '1'
      
AND   ( emacc.acccode between '111216.000' and '111220.000' )  
      
AND ( GLDT.AccID is not null )  
GROUP BY EMAcc.AccID,
	EMAcc.AccCode,
	EMAcc.AccName,
	EMAcc.AccNameEng
UNION	
SELECT	EMAcc.AccID,
	EMAcc.AccCode,
	EMAcc.AccName,
	EMAcc.AccNameEng,
	0 DrAmnt,
	0 CrAmnt,
	SUM(ISNULL(round(DrAmnt,2),0.00) - ISNULL(round(CrAmnt,2),0.00))as Beginn, 'หอยอ้า' AS Sex
FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
		AND (GLDT.DocuStatus = 'N')
		AND ( ((GLDT.DocuType = 503) AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) = '20131231')))
		AND ((GLDT.BrchID = 1) OR (1 = 0)))
	LEFT OUTER JOIN EMDept ON (GLDT.DeptID = EMDept.DeptID)
	LEFT OUTER JOIN EMJob ON (GLDT.JobID= EMJob.JobID)
	LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
WHERE   EMAcc.AccControlFlag = '1'
      
AND (   emacc.acccode between '111216.000' and '111220.000' )  
      
AND ( GLDT.AccID is not null )  
GROUP BY EMAcc.AccID,
	EMACC.AccCode,
	EMAcc.AccName,
	EMAcc.AccNameEng
)
SELECT cte1.AccID, SUM(cte1.DrAmntCurr) AS DrAmntCurr, SUM(cte1.CrAmntCurr) AS CrAmntCurr FROM cte1  
LEFT JOIN cte1 หอยสด ON cte1.Sex = หอยสด.Sex
GROUP BY cte1.Sex, cte1.AccID, cte1.AccCode, cte1.AccName, cte1.AccNameEng
                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-20 12:56:15 | 
                        By :
                            หน้าฮี | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 SQL Query Joke 
 
Code (SQL) 
GO
GO
GO 3 WITH ME
ALTER procedure [dbo].[spu_icstockcost_FIFO]
	@StockCostID 	u_id ,
	@docutype 	int , 
	@docutypecode 	varchar(1),
	@docuid 	u_id , 
	@listno 	u_listno , 
	@goodid 	u_id , 
	@brchid 	u_id ,
	@costamnt 	u_amnt output as
begin
	--	เพื่อใช้ในการรับข้อมูลที่ได้จากการทำงานของ Query
	declare @outamnt 	u_amnt 
	--	ดึงข้อมูลจากรายการโดยไม่รวมต้นทุนที่เกิดจาก Trigger ซึ่งคือคัวมันเองหากส่งเป็น 0 แปลว่าเอารายการต้นทุนทั้งเอกสาร
	select 	@outamnt = Convert(decimal(19,4),isnull(Sum
		      (Case icstockcost.StockFlag When 1 
		      /*การรับเข้า*/
		      Then (Case When (isnull(icstockcost.InQty,0) = 0) and (isnull(icstockcost.InAmnt,0) = 0)and
				      (isnull(icstockcost.OutQty,0)<> 0)and (isnull(icstockcost.OutAmnt,0) = 0)
				      Then 0
				 When (isnull(icstockcost.OutQty,0) > 0)and(isnull(icstockcost.OutAmnt,0) > 0)
				      Then Convert(decimal(19,4),isnull(icstockcost.ReceAmnt,0))
				 When (isnull(icstockcost.InQty,0) = 0)and (isnull(icstockcost.InAmnt,0) = 0)and
				      (isnull(icstockcost.OutQty,0) = 0)and (isnull(icstockcost.OutAmnt,0) = 0)		
				      Then 0
			    Else 0 End)
		      /*การจ่ายออก*/
		      Else (Case When (isnull(icstockcost.InQty,0) > 0)and (isnull(icstockcost.InAmnt,0) > 0)and
				      (isnull(icstockcost.OutQty,0) = 0)and (isnull(icstockcost.OutAmnt,0) = 0)	
				      Then (Case  When isnull(icstockcost.Inqty,0) = 0 
							  Then 0 
							  Else (Convert(decimal(19,4),isnull(icstockcost.InAmnt,0))*
								Convert(decimal(19,4),isnull(icstockcost.payqty,0)))/
								Convert(decimal(19,4),isnull(icstockcost.Inqty,0))
					   End )
				 When (isnull(icstockcost.InQty,0) = 0)and (isnull(icstockcost.InAmnt,0) = 0)and
				      (isnull(icstockcost.OutQty,0) = 0)and (isnull(icstockcost.OutAmnt,0) = 0)	
				      Then Convert(decimal(19,4),isnull(icstockcost.payamnt,0))
				When (isnull(icstockcost.InQty,0) = 0)and (isnull(icstockcost.InAmnt,0) = 0)and
				      (isnull(icstockcost.OutQty,0) < 0)and (isnull(icstockcost.OutAmnt,0) = 0)	
				      Then 0
				 Else (Case  When isnull(icstockcost.Inqty,0) = 0 
							  Then 0 
							  Else (Convert(decimal(19,4),isnull(icstockcost.InAmnt,0))*
								Convert(decimal(19,4),isnull(icstockcost.payqty,0)))/
								Convert(decimal(19,4),isnull(icstockcost.Inqty,0))
				             End )
				 End)
		      End),0))
	from	icstockcost
	where 	(icstockcost.GoodID = @goodid) and 
	   	(icstockcost.DocuType = @docutype) and 
	   	(icstockcost.DocuTypeCode = @docutypecode) and 
		(icstockcost.BrchID = @brchid) and 
	   	(icstockcost.DocuID = @docuid) and
	   	(icstockcost.ListNo = @listno) and
	   	(icstockcost.StockCostID <> @StockCostID)
	-- select ค่าข้อมูลเพื่อ Return ค่า่ข้อมูล
	select @costamnt= isnull(@outamnt,0)
end
                         
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-20 13:04:36 | 
                        By :
                            หน้าฮี | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 จาก #NO13 เดี๋ยวคุณงง Order By หายไปไหนหว่า  
 
Code (SQL) 
;WITH cte1
AS 
(
SELECT	EMAcc.AccID,
	EMAcc.AccCode,
	EMAcc.AccName,
	EMAcc.AccNameEng,
	round( SUM( ISNULL(GLDT.DrAmnt, 0)),2) as DrAmntCurr,
	round( SUM( ISNULL(GLDT.CrAmnt, 0)),2) as CrAmntCurr,
	0 Beginn, 'หอยอ้า' AS Sex
FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
		AND (GLDT.DocuStatus = 'N')
		AND (GLDT.DocuType IN (501))
		AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) between '20140801' AND '20140801')
		AND ((GLDT.BrchID = 1) OR (1 = 0)))
	LEFT OUTER JOIN EMJOb ON (GLDT.JobID = EMJOb.JobID)
	LEFT OUTER JOIN EMDept ON (GLDT.DeptID = EMDept.DeptID)
	LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
WHERE   EMAcc.AccControlFlag = '1'
      
AND   ( emacc.acccode between '111216.000' and '111220.000' )  
      
AND ( GLDT.AccID is not null )  
GROUP BY EMAcc.AccID,
	EMAcc.AccCode,
	EMAcc.AccName,
	EMAcc.AccNameEng
UNION	
SELECT	EMAcc.AccID,
	EMAcc.AccCode,
	EMAcc.AccName,
	EMAcc.AccNameEng,
	0 DrAmnt,
	0 CrAmnt,
	SUM(ISNULL(round(DrAmnt,2),0.00) - ISNULL(round(CrAmnt,2),0.00))as Beginn, 'หอยอ้า' AS Sex
FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
		AND (GLDT.DocuStatus = 'N')
		AND ( ((GLDT.DocuType = 503) AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) = '20131231')))
		AND ((GLDT.BrchID = 1) OR (1 = 0)))
	LEFT OUTER JOIN EMDept ON (GLDT.DeptID = EMDept.DeptID)
	LEFT OUTER JOIN EMJob ON (GLDT.JobID= EMJob.JobID)
	LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
WHERE   EMAcc.AccControlFlag = '1'
      
AND (   emacc.acccode between '111216.000' and '111220.000' )  
      
AND ( GLDT.AccID is not null )  
GROUP BY EMAcc.AccID,
	EMACC.AccCode,
	EMAcc.AccName,
	EMAcc.AccNameEng
)
SELECT cte1.AccID, cte1.AccCode, cte1.AccName, cte1.AccNameEng, 
SUM(cte1.DrAmntCurr) AS DrAmntCurr, SUM(cte1.CrAmntCurr) AS CrAmntCurr, cte1.Sex
FROM cte1  
LEFT JOIN cte1 AS หอยสด ON cte1.Sex = หอยสด.Sex
GROUP BY cte1.Sex, cte1.AccID, cte1.AccCode, cte1.AccName, cte1.AccNameEng
ORDER BY cte1.AccCode
 
 
 
 
@Bird มันไม่มีก็สร้างขึ้นมา สังเกตุ "หอยสด" เอามาทำคีย์ (ไม่ได้เอามาทำเมีย)                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-20 13:20:55 | 
                        By :
                            หน้าฮี | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ทำได้แล้วค่ะ ขอบคุณมากๆ ค่ะ  
ใช้วิธีเอา select มาครอบอีกทีนึง ตามที่คุณBIrD บอกมาค่ะ 
 
**ขออนุญาตลบโค้ดออกนะคะ                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-20 13:26:49 | 
                        By :
                            AnnYZaa | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ....                        
               
               | 
             
            
              
			                
  ประวัติการแก้ไข 2015-02-20 17:37:09              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-20 15:10:56 | 
                        By :
                            Chaidhanan | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ....... 
 
ลงโค้ดให้นะคะ  
ิอันนี้เป็นโค้ดก่อแก้ค่ะ 
 
Code (PHP) 
SELECT	EMAcc.AccID,
	EMAcc.AccCode,
	GLDT.DocuType,
	EMAcc.AccName,
	EMAcc.AccNameEng,
	ISNULL(SUM(round(GLDT.DrAmnt,2)),0.00)DrAmnt,
	ISNULL(SUM(round(GLDT.CrAmnt,2)),0.00)CrAmnt,
	0 Beginn
FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
		AND (GLDT.DocuStatus = 'N')
		AND (GLDT.DocuType IN (501))
		AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) between '20140801' AND '20140801')
		AND ((GLDT.BrchID = 1) OR (1 = 0)))
	LEFT OUTER JOIN EMJOb ON (GLDT.JobID = EMJOb.JobID)
	LEFT OUTER JOIN EMDept ON (GLDT.DeptID = EMDept.DeptID)
	LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
WHERE   EMAcc.AccControlFlag = '1'
      
AND (  ( emacc.acccode between '111000.010' and '111501.000' )  )  
      
AND ( GLDT.AccID is not null )  
GROUP BY EMAcc.AccID,
	EMAcc.AccCode,
	GLDT.DocuType,
	EMAcc.AccName,
	EMAcc.AccNameEng
UNION
SELECT	EMAcc.AccID,
	EMAcc.AccCode,
	GLDT.DocuType,
	EMAcc.AccName,
	EMAcc.AccNameEng,
	0 DrAmnt,
	0 CrAmnt,
	SUM(ISNULL(round(DrAmnt,2),0.00) - ISNULL(round(CrAmnt,2),0.00))Beginn
FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
		AND (GLDT.DocuStatus = 'N')
		AND (((GLDT.DocuType = 501) AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) BETWEEN '20140801' AND '20140801'))
				OR ((GLDT.DocuType = 503) AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) = '20131231')))
		AND ((GLDT.BrchID = 1) OR (1 = 0)))
	LEFT OUTER JOIN EMDept ON (GLDT.DeptID = EMDept.DeptID)
	LEFT OUTER JOIN EMJob ON (GLDT.JobID= EMJob.JobID)
	LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
WHERE   EMAcc.AccControlFlag = '1'
      
AND (  ( emacc.acccode between '111000.010' and '111501.000' )  )  
      
AND ( GLDT.AccID is not null )  
GROUP BY EMAcc.AccID,
	EMACC.AccCode,
	GLDT.DocuType,
	EMAcc.AccName,
	EMAcc.AccNameEng
order by EMAcc.AccCode
 
 
 
อันนี้แก้ว มีการครอบ select 2 ชั้น เพราะ ทำการ sum 2 รอบค่ะ 
 
Code (PHP) 
select LEFT(AccCode,6) as AccCode,sum(DrAmntCurr) as DrAmntCurr ,sum(CrAmntCurr) as CrAmntCurr,sum(Beginn)as Beginn
from (
	select LEFT(AccCode,6) as AccCode,sum(DrAmntCurr) as DrAmntCurr ,sum(CrAmntCurr) as CrAmntCurr,sum(Beginn)as Beginn
	from (
	SELECT 
		EMAcc.AccCode,
		round( SUM( ISNULL(GLDT.DrAmnt, 0)),2) as DrAmntCurr,
		round( SUM( ISNULL(GLDT.CrAmnt, 0)),2) as CrAmntCurr,
		0 Beginn
	FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
			AND (GLDT.DocuStatus = 'N')
			AND (GLDT.DocuType IN (501))
			AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) between '20140801' AND '20140801')
			AND ((GLDT.BrchID = 1) ))
		LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
	WHERE   EMAcc.AccControlFlag = '1'
	      
	AND (  ( emacc.acccode between '111216.000' and '111220.000' )  )  
	      
	AND ( GLDT.AccID is not null )  
	GROUP BY 
		EMAcc.AccCode
	UNION 
	SELECT
		EMAcc.AccCode,
		0 DrAmnt,
		0 CrAmnt,
		SUM(ISNULL(round(DrAmnt,2),0.00) - ISNULL(round(CrAmnt,2),0.00))as Beginn
	FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
			AND (GLDT.DocuStatus = 'N')
			AND ( ((GLDT.DocuType = 503) AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) = '20131231')))
			AND ((GLDT.BrchID = 1) OR (1 = 0)))
		LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
	WHERE   EMAcc.AccControlFlag = '1'
	      
	AND (  ( emacc.acccode between '11100.010' and '111501.000' )  ) 
	      
	AND ( GLDT.AccID is not null )  
	GROUP BY 
		EMACC.AccCode
	) as x
	group by AccCode
 ) as x
where (DrAmntCurr <> '0.00' or CrAmntCurr <> '0.00' or Beginn <> '0.00')
/*where Beginn <> '0.00'*/
group by AccCode
order by LEFT(AccCode,6)
                         
               
               | 
             
            
              
			                
  ประวัติการแก้ไข 2015-02-21 09:50:58              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-20 17:33:42 | 
                        By :
                            AnnYZaa | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ได้มา แล้ว ให้ต่อครับ จะได้บุญกุศลต่อๆกันไป                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-20 17:40:21 | 
                        By :
                            Chaidhanan | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 @ AnnYZaa  ผมดู SQL Query พวกนี้จนชินตา แค่ผมเหลือบตา ผมก็มองทะลุปรุโปร่ง 
ประมาณว่า ผมจับจู๋ฉี่ 
 
ไม่ว่าจะเป็น 105 หรือ 501 หรือ 510, etc  [color=green]ผมจับสำเนียงได้หมดครับ 
ผมรู้แม้กระทั่งว่าคุณกำลังคิดจะทำอะไร?[/color] 
 
 
ก่อนแก้ไขและหลังแก้ไข ผมว่าคุณพูดไม่ตรงกัน ผมเตือนคุณด้วยความหวังดีอีกนิดหนึ่ง 
จาก #NO 18 บรรทัดที่ 50  คุณมั่นใจนะว่ามันถูกต้อง                         
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-20 19:02:59 | 
                        By :
                            หน้าฮี | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 @หน้าฮี  
 
คุณจะคิดอะไรก็เรื่องของคุณเถอะค่ะ  
 
และที่แก้ไขไป ไม่ได้มั่นใจว่าทำถูกทุกอย่าง แค่ทำแล้วให้ผลรันออกมาได้ตามที่ต้องการก็โอเคแล้วค่ะ เพราะไม่ได้เป็นโปรแกรมเมอร์ หรือโปรแกรมมเมอร์มืออาชีพ 
 
ขอบคุณค่ะ                        
               
               | 
             
            
              
			                
  ประวัติการแก้ไข 2015-02-21 09:50:34              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-21 09:21:49 | 
                        By :
                            AnnYZaa | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 @ AnnYZaa 
 
ทั้งชีวิตของผมเจอะเจอคนมานับไม่ถ้วน และทุกฯคนก็จะ พูด/คิด เหมือนฯกัน + คุณอีกคนหนึ่ง  
คุณคือหนึ่งในนั้น ครับ 
 
Good Luck.                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-21 21:02:29 | 
                        By :
                            หน้าฮี | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	     
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ผมเห็นคุณเงียบไป จะด้วยสาเหตุใดฯ ก็ตาม 
 
ผมกำลังตามหาความหมายของคำว่า Reversing Entries 
นิยามศัพท์ทางบัญชี หมายความว่า การกลับรายการทางการบัญชี 
... 
... 
... 
นิยามศัพท์ทางคอมพิวเตอร์ ผมไม่รู้ความหมายที่แท้จริงของมัน 
(คนที่รู้ส่วนใหญ่ก็เจ้าของโปรแกรมทั้งหลายแหล่นั่นแหละ) 
 
 
ผมพยายามตามหามัน ... ... ...  ช่องว่างระหว่าง บัญชีและคอมพิวเตอร์                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2015-02-23 18:48:59 | 
                        By :
                            หน้าฮี | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 CREATE TABLE [dbo].[tablexx]( 
	[type] [varchar](10) NULL, 
	[id] [int] NULL, 
	[list] [varchar](10) NULL, 
	[bfdb] [int] NULL, 
	[bfcr] [int] NULL, 
	[baldb] [int] NULL, 
	[balcr] [int] NULL, 
	[accdb] [int] NULL, 
	[acccr] [int] NULL 
) ON [PRIMARY] 
GO 
 
 
insert into [dbo].[tablexx] 
values (101,111000,'aaa',0,0,1000,500,500,0), 
	   (105,111000,'aaa',5000,0,0,0,5000,0), 
	   (101,111200,'bbbb',0,0,500,0,500,0), 
	   (105,111200,'bbbb',10000,0,0,0,1000,0), 
	   (101,222100,'ccc',0,0,800,500,0,300), 
	   (105,222100,'ccc',0,1000,0,0,0,1000) 
 
 
select * from tablexx 
 
select typea, 
		 id, list, 
sum(bfdb),sum(bfcr),sum(baldb),sum(balcr),sum(accdb),sum(acccr) 
from ( 
	select LAST_VALUE(a.type) over ( partition by id order by id )  as typeA, 
		 id, list, 
	bfdb,bfcr,baldb,balcr,accdb,acccr 
	from tablexx a 
	) aa 
group by typea,id,list 
order by 2,3                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2019-11-22 15:08:44 | 
                        By :
                            WWWWIN | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ตามนนี้จ้า 555 
 
 
Code (SQL) 
CREATE TABLE [dbo].[tablexx](
	[type] [varchar](10) NULL,
	[id] [int] NULL,
	[list] [varchar](10) NULL,
	[bfdb] [int] NULL,
	[bfcr] [int] NULL,
	[baldb] [int] NULL,
	[balcr] [int] NULL,
	[accdb] [int] NULL,
	[acccr] [int] NULL
) ON [PRIMARY]
GO
insert into [dbo].[tablexx]
values (101,111000,'aaa',0,0,1000,500,500,0),
	   (105,111000,'aaa',5000,0,0,0,5000,0),
	   (101,111200,'bbbb',0,0,500,0,500,0),
	   (105,111200,'bbbb',10000,0,0,0,1000,0),
	   (101,222100,'ccc',0,0,800,500,0,300),
	   (105,222100,'ccc',0,1000,0,0,0,1000)
select * from tablexx
select typea,
		 id, list,
sum(bfdb),sum(bfcr),sum(baldb),sum(balcr),sum(accdb),sum(acccr)
from (
	select LAST_VALUE(a.type) over ( partition by id order by id )  as typeA,
		 id, list,
	bfdb,bfcr,baldb,balcr,accdb,acccr
	from tablexx a
	) aa
group by typea,id,list
order by 2,3
                         
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2019-11-22 15:10:31 | 
                        By :
                            WWWWIN | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
      		  
	
     | 
   
 
                 |