我有一些SQL,我需要它根據四個變量(supplier_code,building_code,part_name,part_no)來合計數量。問題出在select語句中,我需要使用CASE語句根據transfer_date選擇建築物。但通過這樣做,我現在必須使用Group By中的transfer_date,然後生成三個不同的行....我需要這些行進行組合。如何組合GROUP BY子句中的行使用SQL
例如 -
的三個值與納皮爾應結合但不是因爲我不得不使用transfer_date組分析研究。
如何解決這個問題在下面的SQL。考慮到這是UPDATE的一部分,所以使用CTE不起作用。
SELECT
Part_Name,
Part_No,
Supplier_Code,
CASE WHEN Transfer_Date > @EndDate THEN Transfer_Building ELSE Building_Code END AS 'Building_Code',
SUM(Quantity) AS 'Incoming_Quantity'
FROM Inventory
WHERE
Regrade = 0 AND
(CASE WHEN Transfer_Date <= @EndDate THEN Transfer_Date ELSE Add_Date END <= @EndDate) AND
(Add_Date >= @StartDate OR Transfer_Date >= @StartDate) AND
Supplier_Code = 'TPP HAMSTEAD' AND Part_No = 'L32730'
GROUP BY
Transfer_Date,
Supplier_Code,
Building_Code,
Transfer_Building,
Part_Name,
Part_No
我可以使用臨時表,但想知道是否有更簡單的方法來實現這一目的?
不羣的轉移日期。按整個案例分組。從select語句中除SUM以外的所有內容,並將其放入組中。同時從您的選擇中刪除Transfer_Date。如果你在那裏需要它,那麼你需要決定如何聚合它。 MAX? –
我必須留下的轉帳日期,但通常不包括在內。現在將刪除。你應該把它作爲答案。 – Danrex
Nick在他的評論中給出了答案 - 將CASE陳述放在組中,並刪除Transfer_Date。 – cddt