數據庫:SQL Server減去兩個case語句
希望這很簡單。我有一個採購訂單查詢,我試圖減去兩個案例的陳述,但我有問題得到它的工作。我使用臨時表來拉在採購訂單數據
參見下面的查詢:
--temp table for PO Inventory lines
select
prchseordr_id,
ISNULL (sum(prchseordrlst_cst_extndd),0) as Inv_Cost
INTO #TempPOInv
from prchseordr
left outer join prchseordrlst on prchseordr.prchseordr_rn = prchseordrlst.prchseordr_rn
where prchseordr_nxt_id = ''
group by prchseordr_id
--------------------
--temp table for PO General lines
select
prchseordr_id,
ISNULL (sum(prchseordrlstgn_cst_extndd),0) as Gen_Cost
INTO #TempPOGen
from prchseordr
left outer join prchseordrlstgn on prchseordr.prchseordr_rn = prchseordrlstgn.prchseordr_rn
where prchseordr_nxt_id = ''
group by prchseordr_id
--------------------
--temp table for PO Subcontractor lines
select
prchseordr_id,
ISNULL (sum(prchseordrlstsb_cntrct_amnt_orgnl),0) as Sub_Cost
INTO #TempPOSub
from prchseordr
left outer join prchseordrlstsb on prchseordr.prchseordr_rn = prchseordrlstsb.prchseordr_rn
where prchseordr_nxt_id = ''
group by prchseordr_id
------------------------------------------------------------
Select
vndr_nme as [Vendor Name],
sum(CASE WHEN prchseordr_type = 'Purchase' THEN Inv_Cost + Gen_Cost + Sub_Cost else 0 end) Purchases,
sum(CASE WHEN prchseordr_type = 'Credit' THEN Inv_Cost + Gen_Cost + Sub_Cost else 0 end) Credits
from prchseordr
left outer join #TempPOInv on prchseordr.prchseordr_id = #TempPOInv.prchseordr_id
left outer join #TempPOGen on prchseordr.prchseordr_id = #TempPOGen.prchseordr_id
left outer join #TempPOSub on prchseordr.prchseordr_id = #TempPOSub.prchseordr_id
join vndr on prchseordr.vndr_rn = vndr.vndr_rn
where prchseordr.prchseordr_entrd_dte between @[email protected] and @[email protected]
and prchseordr_rn <> 0
group by vndr_nme,prchseordr_type
order by vndr_nme
DROP TABLE #TempPOInv
DROP TABLE #TempPOGen
DROP TABLE #TempPOSub
非常基本的我只是想減去從積分的購買,以獲得淨總採購訂單。做這項工作的最佳方式是什麼?
請包括一些樣本數據來說明你想要什麼去做。你想要得到什麼結果? – Siyual
考慮到'prchseordr_type'不能同時是'Purchase'和'Credit',我沒有看到你可以減去的東西。這似乎是你錯過了一個分組或其他機制。 –
在你選擇的任何一個答案的旁註中,你可能想要在你的'..._ Cost'列周圍添加'ISNULL(..._ Cost,0)'(或類似的東西),如果你可能有'NULL在他們的價值。否則,一個'NULL + AnyValue = NULL'。 – BJones