目前尚不清楚您想要返回總金額還是您想要返還部分金額以及總金額。
如果你只想要總價值,可以使用下面的查詢,而不是其他兩個:
SELECT
Total = SUM(Weight)
FROM dbo.tbl_insertxmldetails
WHERE x.OrderName LIKE @jobno + '%'
AND Section IN (
SELECT Material
FROM [Mst_tbl_ExtMaterialGroupList]
WHERE [Ext# Matl Group] IN ('PP04', 'PP12')
)
;
如果希望所有三個值,則應指定您是否希望他們作爲一個單列的單獨列:
PP04 PP12 Total
----- ----- -----
… … …
或在單個列中,但在不同的行:
Ext# Matl Group Weight
--------------- ------
PP04 …
PP12 …
Total …
如果是前者(單列,單獨列),這裏要完成的一個方法:
SELECT
PP04 = SUM(CASE m.[Ext# Matl Group] WHEN 'PP04' THEN x.Weight END),
PP12 = SUM(CASE m.[Ext# Matl Group] WHEN 'PP12' THEN x.Weight END),
Total = SUM(x.Weight)
FROM dbo.tbl_insertxmldetails AS x
INNER JOIN Mst_tbl_ExtMaterialGroupList AS m ON x.Section = m.Material
WHERE m.[Ext# Matl Group] IN ('PP04', 'PP12')
AND x.OrderName LIKE @jobno + '%'
;
如果你想在不同行的結果,那麼你可以嘗試與彙總分組:
SELECT
[Ext# Matl Group] = COALESCE(m.[Ext# Matl Group], 'Total'),
Weight = SUM(x.Weight)
FROM dbo.tbl_insertxmldetails AS x
INNER JOIN Mst_tbl_ExtMaterialGroupList AS m ON x.Section = m.Material
WHERE m.[Ext# Matl Group] IN ('PP04', 'PP12')
AND x.OrderName LIKE @jobno + '%'
GROUP BY
ROLLUP(m.[Ext# Matl Group])
;
注意:如果您的數據庫處於SQL Server 2000兼容模式,則GROUP BY ROLLUP()
將不起作用。在這種情況下,請使用較早的語法:
…
GROUP BY
m.[Ext# Matl Group]
WITH ROLLUP