Мне сложно заставить этот запрос вернуть сумму в 1 строке.

SELECTst.[code], SUM(whst.WHQtyOnHand)
FROM dbo.[StkItem] st, dbo.WhseStk whst
WHERE whst.WHWhseID in (3, 4) 
    AND whst.WHStockLink = st.StockLink 
    AND st.Code = 'BNV203N'
GROUP BY st.[Code], whst.WHWhseID, whst.WHStockLink

Вот результат, который я получаю:

Code        WHQtyOnHand
---------------------------
BNV203N        694
BNV203N       3748

Мне они нужны как единое целое.

1
CypherNet 19 Апр 2016 в 18:28

2 ответа

Лучший ответ

Вы просто хотите сгруппировать по st.Code. Я бы также отказался от этой декартовой формулы join и where. Просто используйте правильный INNER JOIN:

SELECT st.[code], SUM(whst.WHQtyOnHand)
FROM dbo.[StkItem] st
INNER JOIN dbo.WhseStk whst 
    ON whst.WHStockLink = st.StockLink
WHERE whst.WHWhseID IN (3,4)
    AND st.Code = 'BNV203N'
GROUP BY st.[Code]
5
Paul Roub 19 Апр 2016 в 16:10

Измените эту строку:

GROUP BY st.[Code], whst.WHWhseID, whst.WHStockLink

К

GROUP BY st.[Code]

Когда вы группируете по WHWhseID, вы разбиваете эти строки.

4
Rocky 19 Апр 2016 в 15:31