Új hozzászólás Aktív témák
-
rum-cajsz
őstag
válasz lordring #565 üzenetére
A selectben kell egy group by, a számított mezőkre pedig csoportosító fv.
Ha jól értem ez kellene:SELECT
T1.[CardCode], sum(T0.[Quantity]), sum(T0.[LineTotal])
FROM INV1 T0
INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode
WHERE T0.[DocDate] >=[%1] and T0.[DocDate] <= [%2]
group by T1.[CardCode]=Kilroy was here============================ooO=*(_)*=Ooo=======
-
tm5
tag
válasz lordring #2979 üzenetére
Szóval valami ilyennek kéne lenni:
SELECT
T0.[ItemCode], T0.[Dscription], T0.[Quantity], T0.[Price], T0.[Currency], T0.[LineTotal], T0.[TotalFrgn],
T2.[CardName], T0.[ShipDate], T1.[CardCode]
FROM CSI1 T0
INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode
INNER JOIN OCRD T2 ON T1.CardCode = T2.CardCode
WHERE
T0.[ShipDate] >=[%0]AND T0.[ShipDate] <=[%1] AND T2.CardName = '[%3]'
UNION ALL
SELECT
0,'Total:', SUM(LineTotal), SUM(TotalFrgn), NULL, NULL, NULL
FROM
(
SELECT
T0.[ItemCode], T0.[Dscription], T0.[Quantity], T0.[Price], T0.[Currency], T0.[LineTotal], T0.[TotalFrgn],
T2. [CardName], T0.[ShipDate], T1.[CardCode]
FROM CSI1 T0
INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode
INNER JOIN OCRD T2 ON T1.CardCode = T2.CardCode
WHERE
T0.[ShipDate] >=[%0]AND T0.[ShipDate] <=[%1] AND T2.CardName = '[%3]'
)Mindamellett az a véleményem, általában a Total sort nem itt kéne számolni, hanem a kliens oldalt, hisz valszeg a megjelenítéskor úgyis másképp lesz formázva.
-
bpx
őstag
válasz lordring #2979 üzenetére
Az SQL Server is tudja már 2008-tól az ehhez szükséges aggregációs kiegészítéseket. Kicsit eltördeltem, hogy látszon mit módosítottam:
SELECT
T0.[ItemCode], T0.[Dscription], T0.[Quantity], T0.[Price], T0.[Currency],
sum(T0.[LineTotal]), -- eredeti helyett sum, ez valojaban csak az utolso sorban lesz osszeg
sum(T0.[TotalFrgn]), -- eredeti helyett sum, ez valojaban csak az utolso sorban lesz osszeg
T2.[CardName], T0.[ShipDate], T1.[CardCode]
FROM
CSI1 T0 INNER JOIN OITM T1 ON T0.ItemCode = T1.ItemCode
INNER JOIN OCRD T2 ON T1.CardCode = T2.CardCode
WHERE
T0.[ShipDate] >=[%0]AND T0.[ShipDate] <=[%1] AND T2.CardName = '[%3]'
-- es itt jon a lenyeg
GROUP BY
GROUPING SETS((),(T0.[ItemCode], T0.[Dscription], T0.[Quantity], T0.[Price], T0.[Currency], T2.[CardName], T0.[ShipDate], T1.[CardCode] ));