 |
[PHP]
sum ตัวเลขจากการ union จาก 2 บรรทัดให้เหลือ 1 บรรทัด (อธิบายไม่ถูก มีภาพประกอบ) |
|
 |
|
|
 |
 |
|
sum(ฟิวที่ต้องการ) ละ group by รหัส ได้มะ
|
 |
 |
 |
 |
Date :
2015-02-19 15:39:04 |
By :
progamer2000 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ได้ค่ะ
ขออภัยนะคะ ไม่กล้าลงโค้ดเต็มๆ
Code (PHP)
01. รหัส,
02. ISNULL(SUM( round (เดบิต.ยอดปัจจุบัน,2)),0.00)เดบิต.ยอดปัจจุบัน,
03. ISNULL(SUM( round (เครดิต.ยอดปัจจุบัน,2)),0.00)เครดิต.ยอดปัจจุบัน,
04. 0 ยอดยกมา
05.
06. from ......................
07. where ประเภท=101
08. group by รหัส
09.
10. union
11.
12. รหัส,
13. 0 เดบิต.ยอดปัจจุบัน,
14. 0 เครดิต.ยอดปัจจุบัน,
15. SUM(ISNULL( round (DrAmnt,2),0.00) - ISNULL( round (CrAmnt,2),0.00))ยอดยกมา
16.
17. from ......................
18. where ประเภท=105
19. 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)
01. DECLARE @ASSINASSOUT TABLE (ID int , PurchaseCost money, PurchaseDate Date , Period int , Savage decimal (6,2))
02. INSERT INTO @ASSINASSOUT SELECT 1, 25000, '2014-12-29' , 5*12, 20.0/100
03. ; WITH cte
04. AS (
05. SELECT
06. CAST (0 AS int ) AS m, PurchaseCost AS PurchaseCost, PurchaseDate As PurchaseDate,
07. Period AS Period, PurchaseDate AS StartdayOfMonth,
08. CAST (DATEADD(mm, DATEDIFF(mm, 0, PurchaseDate) + 1, 0) -1 AS DATE ) AS LastdayOfMonth,
09. var00 AS DayDiff, CAST (((((PurchaseCost-1) * (20*1.0/100))/var02) * var00) AS money) AS DepreAmount,
10. PurchaseCost AS BookValue, CAST (0 AS money) AS AccumDepre, CAST (DATEPART(dy, CAST ( YEAR (var01) AS CHAR (4)) + '-12-31' ) AS int ) AS DaysOfYear
11. FROM @ASSINASSOUT CROSS APPLY ( SELECT var00 = CAST (DATEDIFF( Day , PurchaseDate, DATEADD(mm, DATEDIFF(mm, 0, PurchaseDate) + 1, 0) -1) + 1 AS int ),
12. var01 = CAST (DATEADD(mm, DATEDIFF(mm, 0, PurchaseDate) + 1, 0) -1 AS DATE ),
13. var02 = CAST (DATEPART(dy, CAST ( YEAR ( CAST (DATEADD(mm,
14. DATEDIFF(mm, 0, DATEADD(mm, 0, PurchaseDate)), 0) AS Date )) AS CHAR (4)) + '-12-31' ) AS int )) a
15. UNION ALL
16. SELECT
17. m + 1, PurchaseCost, PurchaseDate, Period,
18. var11 AS StartdayOfMonth,
19. CAST (DATEADD(mm, DATEDIFF(mm, -1, DATEADD(mm, m + 1, PurchaseDate)), 0) - 1 AS Date ) AS LastdayOfMonth, var10 AS DaysDiff,
20. CASE m + 1 WHEN Period THEN DepreAmount ELSE CAST ((PurchaseCost-1) * (20*1.0/100)/var12 * var10 AS money) END AS DepreAmount,
21. CASE m + 1 WHEN Period THEN CAST (0 AS money) ELSE BookValue - DepreAmount END AS BookValue,
22. CASE m + 1 WHEN Period THEN AccumDepre + BookValue ELSE AccumDepre + DepreAmount END AS AccumDepre,
23. DATEPART(dy, CAST ( YEAR (var11) AS CHAR (4)) + '-12-31' ) AS DaysOfYear
24. FROM cte CROSS APPLY ( SELECT var10 = DATEDIFF( Day ,DATEADD(mm, DATEDIFF(mm, 0, DATEADD(mm, m + 1, PurchaseDate)), 0),
25. DATEADD(mm, DATEDIFF(mm, -1, DATEADD(mm, m + 1, PurchaseDate)), 0) - 1 ) + 1,
26. var11 = CAST (DATEADD(mm, DATEDIFF(mm, 0, DATEADD(mm, m + 1, PurchaseDate)), 0) AS Date ),
27. var12 = CAST (DATEPART(dy, CAST ( YEAR ( CAST (DATEADD(mm,
28. DATEDIFF(mm, 0, DATEADD(mm, m + 1, PurchaseDate)), 0) AS Date )) AS CHAR (4)) + '-12-31' ) AS int )) b
29. WHERE m < Period
30. )
31. SELECT * FROM cte
|
 |
 |
 |
 |
Date :
2015-02-19 16:55:24 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผลลัพธ์ของ Query ด้านบน

ลองทำความเข้าใจดูครับ
|
 |
 |
 |
 |
Date :
2015-02-19 16:57:30 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เอารวมกันแล้วประเภทมันจะเลือกจากเงือนไขอะไรคับ เหมมือนที่ยกตัวอย่างมา 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)
01. SELECT
02. EM.AccCode,
03. EM.AccName,
04. ROUND( SUM ( ISNULL (GL.DrAmnt, 0) ), 2) as Dr,
05. ROUND( SUM ( ISNULL (GL.CrAmnt, 0) ), 2) as Cr,
06.
07. FROM EMAcc as EM
08. LEFT OUTER JOIN GLDT as GL
09. ON GL.AccID = EM.AccID
10. AND GL.DocuStatus = 'N'
11. AND GL.DocuType IN (501)
12. AND CONVERT ( VARCHAR (8),GL.DocuDate,112) between '20140801' AND '20140801'
13. AND GL.BrchID = 1
14. GROUP BY EM.AccCode, EM.AccName
ถ้าเห็นตารางดิบ ด้วยจะทำให้เข้าใจมากกว่านี้
|
ประวัติการแก้ไข 2015-02-20 10:26:56
 |
 |
 |
 |
Date :
2015-02-20 10:25:45 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (SQL)
01. ; WITH cte1
02. AS
03.
04. (
05. SELECT EMAcc.AccID,
06. EMAcc.AccCode,
07. EMAcc.AccName,
08. EMAcc.AccNameEng,
09. round( SUM ( ISNULL (GLDT.DrAmnt, 0)),2) as DrAmntCurr,
10. round( SUM ( ISNULL (GLDT.CrAmnt, 0)),2) as CrAmntCurr,
11. 0 Beginn, 'หอยอ้า' AS Sex
12.
13. FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
14. AND (GLDT.DocuStatus = 'N' )
15. AND (GLDT.DocuType IN (501))
16. AND ( CONVERT ( VARCHAR (8),GLDT.DocuDate,112) between '20140801' AND '20140801' )
17. AND ((GLDT.BrchID = 1) OR (1 = 0)))
18. LEFT OUTER JOIN EMJOb ON (GLDT.JobID = EMJOb.JobID)
19. LEFT OUTER JOIN EMDept ON (GLDT.DeptID = EMDept.DeptID)
20. LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
21. WHERE EMAcc.AccControlFlag = '1'
22.
23. AND ( emacc.acccode between '111216.000' and '111220.000' )
24.
25. AND ( GLDT.AccID is not null )
26. GROUP BY EMAcc.AccID,
27. EMAcc.AccCode,
28. EMAcc.AccName,
29. EMAcc.AccNameEng
30. UNION
31. SELECT EMAcc.AccID,
32. EMAcc.AccCode,
33. EMAcc.AccName,
34. EMAcc.AccNameEng,
35. 0 DrAmnt,
36. 0 CrAmnt,
37. SUM ( ISNULL (round(DrAmnt,2),0.00) - ISNULL (round(CrAmnt,2),0.00)) as Beginn, 'หอยอ้า' AS Sex
38.
39. FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
40. AND (GLDT.DocuStatus = 'N' )
41. AND ( ((GLDT.DocuType = 503) AND ( CONVERT ( VARCHAR (8),GLDT.DocuDate,112) = '20131231' )))
42. AND ((GLDT.BrchID = 1) OR (1 = 0)))
43. LEFT OUTER JOIN EMDept ON (GLDT.DeptID = EMDept.DeptID)
44. LEFT OUTER JOIN EMJob ON (GLDT.JobID= EMJob.JobID)
45. LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
46. WHERE EMAcc.AccControlFlag = '1'
47.
48. AND ( emacc.acccode between '111216.000' and '111220.000' )
49.
50. AND ( GLDT.AccID is not null )
51. GROUP BY EMAcc.AccID,
52. EMACC.AccCode,
53. EMAcc.AccName,
54. EMAcc.AccNameEng
55.
56. )
57. SELECT cte1.AccID, SUM (cte1.DrAmntCurr) AS DrAmntCurr, SUM (cte1.CrAmntCurr) AS CrAmntCurr FROM cte1
58. LEFT JOIN cte1 หอยสด ON cte1.Sex = หอยสด.Sex
59. 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)
01. GO
02. GO
03. GO 3 WITH ME
04.
05. ALTER procedure [dbo].[spu_icstockcost_FIFO]
06. @StockCostID u_id ,
07. @docutype int ,
08. @docutypecode varchar (1),
09. @docuid u_id ,
10. @listno u_listno ,
11. @goodid u_id ,
12. @brchid u_id ,
13. @costamnt u_amnt output as
14. begin
15.
16. declare @outamnt u_amnt
17.
18. select @outamnt = Convert ( decimal (19,4), isnull ( Sum
19. ( Case icstockcost.StockFlag When 1
20. /*การรับเข้า*/
21. Then ( Case When ( isnull (icstockcost.InQty,0) = 0) and ( isnull (icstockcost.InAmnt,0) = 0) and
22. ( isnull (icstockcost.OutQty,0)<> 0) and ( isnull (icstockcost.OutAmnt,0) = 0)
23. Then 0
24. When ( isnull (icstockcost.OutQty,0) > 0) and ( isnull (icstockcost.OutAmnt,0) > 0)
25. Then Convert ( decimal (19,4), isnull (icstockcost.ReceAmnt,0))
26. When ( isnull (icstockcost.InQty,0) = 0) and ( isnull (icstockcost.InAmnt,0) = 0) and
27. ( isnull (icstockcost.OutQty,0) = 0) and ( isnull (icstockcost.OutAmnt,0) = 0)
28. Then 0
29. Else 0 End )
30. /*การจ่ายออก*/
31. Else ( Case When ( isnull (icstockcost.InQty,0) > 0) and ( isnull (icstockcost.InAmnt,0) > 0) and
32. ( isnull (icstockcost.OutQty,0) = 0) and ( isnull (icstockcost.OutAmnt,0) = 0)
33. Then ( Case When isnull (icstockcost.Inqty,0) = 0
34. Then 0
35. Else ( Convert ( decimal (19,4), isnull (icstockcost.InAmnt,0))*
36. Convert ( decimal (19,4), isnull (icstockcost.payqty,0)))/
37. Convert ( decimal (19,4), isnull (icstockcost.Inqty,0))
38. End )
39. When ( isnull (icstockcost.InQty,0) = 0) and ( isnull (icstockcost.InAmnt,0) = 0) and
40. ( isnull (icstockcost.OutQty,0) = 0) and ( isnull (icstockcost.OutAmnt,0) = 0)
41. Then Convert ( decimal (19,4), isnull (icstockcost.payamnt,0))
42. When ( isnull (icstockcost.InQty,0) = 0) and ( isnull (icstockcost.InAmnt,0) = 0) and
43. ( isnull (icstockcost.OutQty,0) < 0) and ( isnull (icstockcost.OutAmnt,0) = 0)
44. Then 0
45. Else ( Case When isnull (icstockcost.Inqty,0) = 0
46. Then 0
47. Else ( Convert ( decimal (19,4), isnull (icstockcost.InAmnt,0))*
48. Convert ( decimal (19,4), isnull (icstockcost.payqty,0)))/
49. Convert ( decimal (19,4), isnull (icstockcost.Inqty,0))
50. End )
51. End )
52. End ),0))
53. from icstockcost
54. where (icstockcost.GoodID = @goodid) and
55. (icstockcost.DocuType = @docutype) and
56. (icstockcost.DocuTypeCode = @docutypecode) and
57. (icstockcost.BrchID = @brchid) and
58. (icstockcost.DocuID = @docuid) and
59. (icstockcost.ListNo = @listno) and
60. (icstockcost.StockCostID <> @StockCostID)
61.
62. select @costamnt= isnull (@outamnt,0)
63. end
|
 |
 |
 |
 |
Date :
2015-02-20 13:04:36 |
By :
หน้าฮี |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จาก #NO13 เดี๋ยวคุณงง Order By หายไปไหนหว่า
Code (SQL)
01. ; WITH cte1
02. AS
03.
04. (
05. SELECT EMAcc.AccID,
06. EMAcc.AccCode,
07. EMAcc.AccName,
08. EMAcc.AccNameEng,
09. round( SUM ( ISNULL (GLDT.DrAmnt, 0)),2) as DrAmntCurr,
10. round( SUM ( ISNULL (GLDT.CrAmnt, 0)),2) as CrAmntCurr,
11. 0 Beginn, 'หอยอ้า' AS Sex
12.
13. FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
14. AND (GLDT.DocuStatus = 'N' )
15. AND (GLDT.DocuType IN (501))
16. AND ( CONVERT ( VARCHAR (8),GLDT.DocuDate,112) between '20140801' AND '20140801' )
17. AND ((GLDT.BrchID = 1) OR (1 = 0)))
18. LEFT OUTER JOIN EMJOb ON (GLDT.JobID = EMJOb.JobID)
19. LEFT OUTER JOIN EMDept ON (GLDT.DeptID = EMDept.DeptID)
20. LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
21. WHERE EMAcc.AccControlFlag = '1'
22.
23. AND ( emacc.acccode between '111216.000' and '111220.000' )
24.
25. AND ( GLDT.AccID is not null )
26. GROUP BY EMAcc.AccID,
27. EMAcc.AccCode,
28. EMAcc.AccName,
29. EMAcc.AccNameEng
30. UNION
31. SELECT EMAcc.AccID,
32. EMAcc.AccCode,
33. EMAcc.AccName,
34. EMAcc.AccNameEng,
35. 0 DrAmnt,
36. 0 CrAmnt,
37. SUM ( ISNULL (round(DrAmnt,2),0.00) - ISNULL (round(CrAmnt,2),0.00)) as Beginn, 'หอยอ้า' AS Sex
38.
39. FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
40. AND (GLDT.DocuStatus = 'N' )
41. AND ( ((GLDT.DocuType = 503) AND ( CONVERT ( VARCHAR (8),GLDT.DocuDate,112) = '20131231' )))
42. AND ((GLDT.BrchID = 1) OR (1 = 0)))
43. LEFT OUTER JOIN EMDept ON (GLDT.DeptID = EMDept.DeptID)
44. LEFT OUTER JOIN EMJob ON (GLDT.JobID= EMJob.JobID)
45. LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
46. WHERE EMAcc.AccControlFlag = '1'
47.
48. AND ( emacc.acccode between '111216.000' and '111220.000' )
49.
50. AND ( GLDT.AccID is not null )
51. GROUP BY EMAcc.AccID,
52. EMACC.AccCode,
53. EMAcc.AccName,
54. EMAcc.AccNameEng
55.
56. )
57. SELECT cte1.AccID, cte1.AccCode, cte1.AccName, cte1.AccNameEng,
58. SUM (cte1.DrAmntCurr) AS DrAmntCurr, SUM (cte1.CrAmntCurr) AS CrAmntCurr, cte1.Sex
59. FROM cte1
60. LEFT JOIN cte1 AS หอยสด ON cte1.Sex = หอยสด.Sex
61. GROUP BY cte1.Sex, cte1.AccID, cte1.AccCode, cte1.AccName, cte1.AccNameEng
62. 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)
01. SELECT EMAcc.AccID,
02. EMAcc.AccCode,
03. GLDT.DocuType,
04. EMAcc.AccName,
05. EMAcc.AccNameEng,
06. ISNULL(SUM( round (GLDT.DrAmnt,2)),0.00)DrAmnt,
07. ISNULL(SUM( round (GLDT.CrAmnt,2)),0.00)CrAmnt,
08. 0 Beginn
09.
10. FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
11. AND (GLDT.DocuStatus = 'N' )
12. AND (GLDT.DocuType IN (501))
13. AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) between '20140801' AND '20140801' )
14. AND ((GLDT.BrchID = 1) OR (1 = 0)))
15. LEFT OUTER JOIN EMJOb ON (GLDT.JobID = EMJOb.JobID)
16. LEFT OUTER JOIN EMDept ON (GLDT.DeptID = EMDept.DeptID)
17. LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
18. WHERE EMAcc.AccControlFlag = '1'
19.
20. AND ( ( emacc.acccode between '111000.010' and '111501.000' ) )
21.
22. AND ( GLDT.AccID is not null )
23. GROUP BY EMAcc.AccID,
24. EMAcc.AccCode,
25. GLDT.DocuType,
26. EMAcc.AccName,
27. EMAcc.AccNameEng
28.
29.
30.
31. UNION
32.
33. SELECT EMAcc.AccID,
34. EMAcc.AccCode,
35. GLDT.DocuType,
36. EMAcc.AccName,
37. EMAcc.AccNameEng,
38. 0 DrAmnt,
39. 0 CrAmnt,
40. SUM(ISNULL( round (DrAmnt,2),0.00) - ISNULL( round (CrAmnt,2),0.00))Beginn
41.
42. FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
43. AND (GLDT.DocuStatus = 'N' )
44. AND (((GLDT.DocuType = 501) AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) BETWEEN '20140801' AND '20140801' ))
45. OR ((GLDT.DocuType = 503) AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) = '20131231' )))
46. AND ((GLDT.BrchID = 1) OR (1 = 0)))
47. LEFT OUTER JOIN EMDept ON (GLDT.DeptID = EMDept.DeptID)
48. LEFT OUTER JOIN EMJob ON (GLDT.JobID= EMJob.JobID)
49. LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
50. WHERE EMAcc.AccControlFlag = '1'
51.
52. AND ( ( emacc.acccode between '111000.010' and '111501.000' ) )
53.
54. AND ( GLDT.AccID is not null )
55. GROUP BY EMAcc.AccID,
56. EMACC.AccCode,
57. GLDT.DocuType,
58. EMAcc.AccName,
59. EMAcc.AccNameEng
60. order by EMAcc.AccCode
อันนี้แก้ว มีการครอบ select 2 ชั้น เพราะ ทำการ sum 2 รอบค่ะ
Code (PHP)
01. select LEFT(AccCode,6) as AccCode,sum(DrAmntCurr) as DrAmntCurr ,sum(CrAmntCurr) as CrAmntCurr,sum(Beginn) as Beginn
02. from (
03.
04. select LEFT(AccCode,6) as AccCode,sum(DrAmntCurr) as DrAmntCurr ,sum(CrAmntCurr) as CrAmntCurr,sum(Beginn) as Beginn
05. from (
06. SELECT
07. EMAcc.AccCode,
08. round ( SUM( ISNULL(GLDT.DrAmnt, 0)),2) as DrAmntCurr,
09. round ( SUM( ISNULL(GLDT.CrAmnt, 0)),2) as CrAmntCurr,
10. 0 Beginn
11.
12. FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
13. AND (GLDT.DocuStatus = 'N' )
14. AND (GLDT.DocuType IN (501))
15. AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) between '20140801' AND '20140801' )
16. AND ((GLDT.BrchID = 1) ))
17. LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
18. WHERE EMAcc.AccControlFlag = '1'
19.
20. AND ( ( emacc.acccode between '111216.000' and '111220.000' ) )
21.
22. AND ( GLDT.AccID is not null )
23. GROUP BY
24. EMAcc.AccCode
25.
26. UNION
27.
28. SELECT
29. EMAcc.AccCode,
30. 0 DrAmnt,
31. 0 CrAmnt,
32. SUM(ISNULL( round (DrAmnt,2),0.00) - ISNULL( round (CrAmnt,2),0.00)) as Beginn
33.
34. FROM EMAcc LEFT OUTER JOIN GLDT ON ((GLDT.AccID = EMAcc.AccID)
35. AND (GLDT.DocuStatus = 'N' )
36. AND ( ((GLDT.DocuType = 503) AND (CONVERT(VARCHAR(8),GLDT.DocuDate,112) = '20131231' )))
37. AND ((GLDT.BrchID = 1) OR (1 = 0)))
38. LEFT OUTER JOIN EMBrch ON (GLDT.BrchID = EMBrch.BrchID)
39. WHERE EMAcc.AccControlFlag = '1'
40.
41. AND ( ( emacc.acccode between '11100.010' and '111501.000' ) )
42.
43. AND ( GLDT.AccID is not null )
44. GROUP BY
45. EMACC.AccCode
46.
47. ) as x
48. group by AccCode
49. ) as x
50. where (DrAmntCurr <> '0.00' or CrAmntCurr <> '0.00' or Beginn <> '0.00' )
51.
52. group by AccCode
53.
54.
55. 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)
01. CREATE TABLE [dbo].[tablexx](
02. [type] [ varchar ](10) NULL ,
03. [id] [ int ] NULL ,
04. [list] [ varchar ](10) NULL ,
05. [bfdb] [ int ] NULL ,
06. [bfcr] [ int ] NULL ,
07. [baldb] [ int ] NULL ,
08. [balcr] [ int ] NULL ,
09. [accdb] [ int ] NULL ,
10. [acccr] [ int ] NULL
11. ) ON [ PRIMARY ]
12. GO
13.
14.
15. insert into [dbo].[tablexx]
16. values (101,111000, 'aaa' ,0,0,1000,500,500,0),
17. (105,111000, 'aaa' ,5000,0,0,0,5000,0),
18. (101,111200, 'bbbb' ,0,0,500,0,500,0),
19. (105,111200, 'bbbb' ,10000,0,0,0,1000,0),
20. (101,222100, 'ccc' ,0,0,800,500,0,300),
21. (105,222100, 'ccc' ,0,1000,0,0,0,1000)
22.
23.
24. select * from tablexx
25.
26. select typea,
27. id, list,
28. sum (bfdb), sum (bfcr), sum (baldb), sum (balcr), sum (accdb), sum (acccr)
29. from (
30. select LAST_VALUE(a.type) over ( partition by id order by id ) as typeA,
31. id, list,
32. bfdb,bfcr,baldb,balcr,accdb,acccr
33. from tablexx a
34. ) aa
35. group by typea,id,list
36. order by 2,3
|
 |
 |
 |
 |
Date :
2019-11-22 15:10:31 |
By :
WWWWIN |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|