0

任何人都可以帮助我吗?我想计算 2 行或更多行记录,请参见下面的查询。

SELECT docs_DocCode, SUM(invd_Qty) AS Total_IN
FROM   dbo.SI_InventoryDetail

WHERE  (docs_DocCode = 'D.C') AND (itm_ItemCode = '0101050000083') OR
       (docs_DocCode = 'STO') AND (itm_ItemCode = '0101050000083') OR
       (docs_DocCode = 'SAO') AND (itm_ItemCode = '0101050000083') OR
       (docs_DocCode = 'IOB') AND (itm_ItemCode = '0101050000083') OR
       (docs_DocCode = 'GRN') AND (itm_ItemCode = '0101050000083') OR
       (docs_DocCode = 'STI') AND (itm_ItemCode = '0101050000083') OR
       (docs_DocCode = 'SAI') AND (itm_ItemCode = '0101050000083') OR
       (docs_DocCode = 'SRN') AND (itm_ItemCode = '0101050000083') OR
       (docs_DocCode = 'PRN') AND (itm_ItemCode = '0101050000083')
GROUP BY docs_DocCode

以上查询给我结果如下

dics_doccode   Total
D.C            328.00000000
GRN            205.00000000
IOB             96.00000000
SAI             66.00000000
SAO             51.00000000
SRN             14.00000000
STI            150.00000000
STO            150.00000000

现在我想添加 (D.C+STI+SAI) - (GRN+STI+SAI+IOB) = 一个值

我正在使用 SQL SERVER 2000

谢谢

4

2 回答 2

1
SELECT SUM(CASE
             WHEN docs_DocCode IN ('D.C', 'STI', 'SAI') THEN invd_Qty
             WHEN docs_DocCode IN ('GRN', 'STI', 'SAI', 'IOB') THEN -1 * invd_Qty
             ELSE 0
           END) AS One_Value
....

请注意,invd_Qty不属于任何 from 的'D.C', 'STI', 'SAI', 'GRN', 'STI', 'SAI', 'IOB'将不会被添加。

PS:(D.C+ STI+SAI)-(GRN+STI +SAI+IOB)-我强调了无意义的(??)部分。它等于D.C. - (SAI + IOB)

于 2010-12-14T05:54:41.043 回答
0

我解决了我的问题, 感谢“Zerkms”下面是我的查询和结果

选择 Itm_itemcode,

    SUM(CASE WHEN docs_DocCode IN ('D.C', 'STO', 'SAO','PRN') THEN INVD_QTY END ) - 
    SUM(CASE WHEN docs_DocCode IN ('GRN', 'STI', 'SAI','SRN','IOB') THEN invd_Qty END) AS Qty

来自 SI_InventoryDe​​tail

其中 Itm_itemcode = '0101050000083'

按 Itm_itemcode 分组

结果

Item_code 数量
0101050000083 -2.00000000

谢谢勇敢的阿里哈特里

于 2010-12-14T06:58:29.220 回答