 |
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 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|