Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > sum ตัวเลขจากการ union จาก 2 บรรทัดให้เหลือ 1 บรรทัด (อธิบายไม่ถูก มีภาพประกอบ)



 

sum ตัวเลขจากการ union จาก 2 บรรทัดให้เหลือ 1 บรรทัด (อธิบายไม่ถูก มีภาพประกอบ)

 



Topic : 114532



โพสกระทู้ ( 129 )
บทความ ( 0 )



สถานะออฟไลน์




จะทำยังไงให้รายการที่มีรหัสเดียวกัน แต่มีการแยกประเภทไว้ sum ให้รวมเป็นบรรทัดเดียวกัน
ตอนทำจริงคอลัม ประเภทจะไม่เอามาแสดง

01



Tag : PHP, Ms SQL Server 2008, HTML/CSS







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-02-19 15:37:30 By : AnnYZaa View : 3396 Reply : 26
 

 

No. 1



โพสกระทู้ ( 1,150 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

sum(ฟิวที่ต้องการ) ละ group by รหัส ได้มะ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-19 15:39:04 By : progamer2000
 


 

No. 2



โพสกระทู้ ( 129 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่ได้ค่ะ

ขออภัยนะคะ ไม่กล้าลงโค้ดเต็มๆ

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
 

 

No. 3



โพสกระทู้ ( 1,150 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

แต่ละ table sum กันก่อนมา union ได้ไหมฮะ ?
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-19 16:31:28 By : progamer2000
 


 

No. 4

Guest


ตอบความคิดเห็นที่ : 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 : หน้าฮี
 


 

No. 5

Guest


ผลลัพธ์ของ Query ด้านบน

x_ass_x_result

ลองทำความเข้าใจดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-19 16:57:30 By : หน้าฮี
 


 

No. 6



โพสกระทู้ ( 129 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 4 เขียนโดย : หน้าฮี เมื่อวันที่ 2015-02-19 16:55:24
รายละเอียดของการตอบ ::
ขอบคุณค่ะ แต่ตัวเลข 101 และ 105 เป็นตัวเลขที่สมมุติขึ้นมาจริงๆ ค่ะ
จริงๆ ไม่ได้กลัวเจ้าของโปรแกรมว่าค่ะ แต่เจอบางคนมาบอกว่าเสียเวลาที่จะมาแก้โปรแกรมเหล่านี้ ถ้าเป็นเค้าเค้าไม่ทำ ก็เลยไม่อยากจะอธิบายค่ะ

ขอบคุณนะคะเดี๋ยวลองทำความเข้าใจดูก่อน

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-19 17:19:40 By : AnnYZaa
 


 

No. 7



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


เอามาลงเถอะครับจะได้่ช่วยได้ อย่าไปสนใจพวก หมูหมากาไก่ที่ ชอบแขวะ แต่ไม่ช่วย

ผมช่วยทุกคน อาจจะมีแขวะมีเหน็บบ้าง ก็บางครั้ง แต่ก็เพื่อประโยชน์ของ ผู้ถามนะครับ
คือบางคนต้องตีต้องทุบถึงจะรู้สึกอะครับ แค่พูดบอกอย่างเดียวไม่ค่อยรู้สึกรู้สา 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
 


 

No. 8



โพสกระทู้ ( 129 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 7 เขียนโดย : Chaidhanan เมื่อวันที่ 2015-02-19 17:35:42
รายละเอียดของการตอบ ::
ขอบคุณค่ะ



ประวัติการแก้ไข
2015-02-20 09:14:26
2015-02-20 13:33:20
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-20 09:13:20 By : AnnYZaa
 


 

No. 9



โพสกระทู้ ( 535 )
บทความ ( 0 )



สถานะออฟไลน์


เอารวมกันแล้วประเภทมันจะเลือกจากเงือนไขอะไรคับ เหมมือนที่ยกตัวอย่างมา 101,105 รวมกันได้ 105 ใช้เงื่อนไขอะไร ถึงได้ 105 ครับ รวมกันไม่ไม่น่าอยาก นะ แต่ประเภทที่มันจะโชว์ใช้เงื่อนไขอะไร อะ
รวมกันแค่ตัดประเภทแล้ว group by รหัสก็ได้แล้ว ครับแต่ปัญหาอยู่ที่ประเภท
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-20 09:38:45 By : gaowteen
 


 

No. 10



โพสกระทู้ ( 129 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 9 เขียนโดย : gaowteen เมื่อวันที่ 2015-02-20 09:38:45
รายละเอียดของการตอบ ::
ตรงคอลัมประเภท จริงๆ แล้วไม่โชว์ค่ะ ที่ได้ 105 แค่ทำให้มองเห็นภาพเฉยๆ ว่ามันจะเหลือแถวเดียว จริงๆ จะตัดคอมลัมนั้นออก แต่ลืมค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-20 09:46:16 By : AnnYZaa
 


 

No. 11



โพสกระทู้ ( 535 )
บทความ ( 0 )



สถานะออฟไลน์


งั้นก็ ตัด ประเภทออก เอา select ครอบอีกชั้น แล้ว sum ครับ group by รัส
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-20 10:10:05 By : gaowteen
 


 

No. 12



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ผมอ่านโค๊ดแล้วงง นะครับ คือ บางตารางที่อ้างอิ่งก็ไม่มี ชื่อฟีลด์ สำหรับ 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
 


 

No. 13

Guest


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 : หน้าฮี
 


 

No. 14

Guest


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 : หน้าฮี
 


 

No. 15

Guest


จาก #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 : หน้าฮี
 


 

No. 16



โพสกระทู้ ( 129 )
บทความ ( 0 )



สถานะออฟไลน์


ทำได้แล้วค่ะ ขอบคุณมากๆ ค่ะ
ใช้วิธีเอา select มาครอบอีกทีนึง ตามที่คุณBIrD บอกมาค่ะ

**ขออนุญาตลบโค้ดออกนะคะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-20 13:26:49 By : AnnYZaa
 


 

No. 17



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


....


ประวัติการแก้ไข
2015-02-20 17:37:09
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-20 15:10:56 By : Chaidhanan
 


 

No. 18



โพสกระทู้ ( 129 )
บทความ ( 0 )



สถานะออฟไลน์


.......

ลงโค้ดให้นะคะ
ิอันนี้เป็นโค้ดก่อแก้ค่ะ

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
 


 

No. 19



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ได้มา แล้ว ให้ต่อครับ จะได้บุญกุศลต่อๆกันไป
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-20 17:40:21 By : Chaidhanan
 


 

No. 20

Guest


@ AnnYZaa ผมดู SQL Query พวกนี้จนชินตา แค่ผมเหลือบตา ผมก็มองทะลุปรุโปร่ง
ประมาณว่า ผมจับจู๋ฉี่

ไม่ว่าจะเป็น 105 หรือ 501 หรือ 510, etc [color=green]ผมจับสำเนียงได้หมดครับ
ผมรู้แม้กระทั่งว่าคุณกำลังคิดจะทำอะไร?[/color]


ก่อนแก้ไขและหลังแก้ไข ผมว่าคุณพูดไม่ตรงกัน ผมเตือนคุณด้วยความหวังดีอีกนิดหนึ่ง
จาก #NO 18 บรรทัดที่ 50 คุณมั่นใจนะว่ามันถูกต้อง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-20 19:02:59 By : หน้าฮี
 


 

No. 21



โพสกระทู้ ( 129 )
บทความ ( 0 )



สถานะออฟไลน์


@หน้าฮี

คุณจะคิดอะไรก็เรื่องของคุณเถอะค่ะ

และที่แก้ไขไป ไม่ได้มั่นใจว่าทำถูกทุกอย่าง แค่ทำแล้วให้ผลรันออกมาได้ตามที่ต้องการก็โอเคแล้วค่ะ เพราะไม่ได้เป็นโปรแกรมเมอร์ หรือโปรแกรมมเมอร์มืออาชีพ

ขอบคุณค่ะ


ประวัติการแก้ไข
2015-02-21 09:50:34
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-21 09:21:49 By : AnnYZaa
 


 

No. 22

Guest


@ AnnYZaa

ทั้งชีวิตของผมเจอะเจอคนมานับไม่ถ้วน และทุกฯคนก็จะ พูด/คิด เหมือนฯกัน + คุณอีกคนหนึ่ง
คุณคือหนึ่งในนั้น ครับ

Good Luck.
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-21 21:02:29 By : หน้าฮี
 


 

No. 23

Guest


ความหมาย ของคำว่า "คุณคือหนึ่งในนั้น"
ไม่ได้มีความหมายมากไปกว่าคำว่า "คุณก็ไม่แตกต่างจากคนอื่น"

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-21 21:06:26 By : หน้าฮี
 


 

No. 24

Guest


ผมเห็นคุณเงียบไป จะด้วยสาเหตุใดฯ ก็ตาม

ผมกำลังตามหาความหมายของคำว่า Reversing Entries
นิยามศัพท์ทางบัญชี หมายความว่า การกลับรายการทางการบัญชี
...
...
...
นิยามศัพท์ทางคอมพิวเตอร์ ผมไม่รู้ความหมายที่แท้จริงของมัน
(คนที่รู้ส่วนใหญ่ก็เจ้าของโปรแกรมทั้งหลายแหล่นั่นแหละ)


ผมพยายามตามหามัน ... ... ... ช่องว่างระหว่าง บัญชีและคอมพิวเตอร์
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-02-23 18:48:59 By : หน้าฮี
 


 

No. 25

Guest


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
 


 

No. 26

Guest


ตามนนี้จ้า 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
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : sum ตัวเลขจากการ union จาก 2 บรรทัดให้เหลือ 1 บรรทัด (อธิบายไม่ถูก มีภาพประกอบ)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่