Dear All Expert,
I wanna ask how to make a variable in query report.
This my query :
SELECT T2.[BaseRef] 'SO No.', T2.DocDate 'SO PostDate', T0.[CardName] 'Customer Name',
T7.[GroupName] 'Customer Group', T0.[NumAtCard], T0.[DocNum] 'DO No',
T0.[DocDate] 'DO PostDate', T0.DocStatus, T10.DocCur 'Curr', T8.[SlpName] [Sales Name]
--Gross Margin
,((CASE T0.DocCur WHEN 'IDR' THEN T0.DocTotal - T0.VatSum - T0.TotalExpns ELSE T0.DocTotalFC - T0.VatSumFC - T0.TotalExpFC END)-((CASE T0.DocCur WHEN 'IDR' THEN T0.DocTotal - T0.VatSum - T0.TotalExpns ELSE T0.DocTotalFC - T0.VatSumFC - T0.TotalExpFC END) - ((CASE T0.DocCur WHEN 'IDR' THEN T0.GrosProfit ELSE T0.GrosProfFC END)))*1.15 )'Gross Margin'
--Gross Margin After Marketing Cost (formula same as above and I write again)
,((CASE T0.DocCur WHEN 'IDR' THEN T0.DocTotal - T0.VatSum - T0.TotalExpns ELSE T0.DocTotalFC - T0.VatSumFC - T0.TotalExpFC END)-((CASE T0.DocCur WHEN 'IDR' THEN T0.DocTotal - T0.VatSum - T0.TotalExpns ELSE T0.DocTotalFC - T0.VatSumFC - T0.TotalExpFC END) - ((CASE T0.DocCur WHEN 'IDR' THEN T0.GrosProfit ELSE T0.GrosProfFC END)))*1.15 )
- (CASE WHEN T10.U_TOM_ComType = '1' THEN ((CASE T0.DocCur WHEN 'IDR' THEN (T0.[DocTotal] - T0.[TotalExpns] - T0.[VatSum] ) ELSE (T0.[DocTotalFC] - T0.[VatSumFC] - T0.[TotalExpFC]) END)*0) WHEN T10.U_TOM_ComType = '2' THEN ((CASE T0.DocCur WHEN 'IDR' THEN (T0.[DocTotal] - T0.[TotalExpns] - T0.[VatSum] ) ELSE (T0.[DocTotalFC] - T0.[VatSumFC] - T0.[TotalExpFC]) END)*0.03) ELSE ((CASE T0.DocCur WHEN 'IDR' THEN (T0.[DocTotal] - T0.[TotalExpns] - T0.[VatSum] ) ELSE (T0.[DocTotalFC] - T0.[VatSumFC] - T0.[TotalExpFC]) END)*0.1) END) 'Gross Margin After Marketing Cost'
FROM ODLN T0
INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode
INNER JOIN DLN1 T2 ON T0.DocEntry = T2.DocEntry
LEFT JOIN OSHP T5 ON T0.TrnspCode = T5.TrnspCode
INNER JOIN OCTG T6 ON T0.GroupNum = T6.GroupNum
INNER JOIN OCRG T7 ON T7.GroupCode = T1.GroupCode
INNER JOIN OSLP T8 ON T8.SlpCode = T0.SlpCode
LEFT JOIN ORDR T10 ON T10.DocEntry = T2.BaseEntry
LEFT JOIN RDR1 T11 ON T10.DocEntry = T11.DocEntry and T2.BaseLine = T11.linenum
LEFT JOIN INV1 T3 ON T3.BaseEntry = T2.DocEntry AND T3.BaseLine = T2.LineNum
LEFT JOIN OINV T4 ON T4.DocEntry = T3.DocEntry
WHERE T0.DocDate LIKE '%%2014%%'
ORDER BY T0.[DocNum] ASC
It will show all transaction in 2014.
And I wanna make variable that can store formula of Gross Margin.
So I only call Gross Margin for another formula.
I've tried to make a variable like this :
/* SELECT FROM [dbo].[ODLN] T0 */
DECLARE @GrossMargin AS int
/* WHERE */
SET @GrossMargin = SELECT ((CASE T0.DocCur WHEN 'IDR' THEN T0.DocTotal - T0.VatSum - T0.TotalExpns ELSE T0.DocTotalFC - T0.VatSumFC - T0.TotalExpFC END)-((CASE T0.DocCur WHEN 'IDR' THEN T0.DocTotal - T0.VatSum - T0.TotalExpns ELSE T0.DocTotalFC - T0.VatSumFC - T0.TotalExpFC END) - ((CASE T0.DocCur WHEN 'IDR' THEN T0.GrosProfit ELSE T0.GrosProfFC END)))*1.15 )
FROM ODLN T0
WHERE T0.DocDate LIKE '%%2014%%'
But it only give me one value, not all value from Gross Margin in all transaction in 2014.
So please, there's anyone can help me.
I wanna make a right variable.