给出2行的SQL和。我要一排

给出2行的SQL和。我要一排,sql,sql-server,Sql,Sql Server,我很难让这个查询返回一行中的总和 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 以

我很难让这个查询返回一行中的总和

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
我总共需要它们。

更改此行:

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

当您按WHSEID分组时,可以将这些行分隔开。

更改此行:

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


当您按whseid分组时,您会将这些行分隔开。

您只想按
st.code
分组。我也会摆脱笛卡尔式的
join
where
子句的习惯。只需使用适当的
内部联接

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]

您只需按
st.code
分组即可。我也会摆脱笛卡尔式的
join
where
子句的习惯。只需使用适当的
内部联接

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]

这在sql server上是否有效?在ANSI-92 sql标准(20多年前)中,旧样式的逗号分隔表列表样式已被正确的ANSI
JOIN
语法所取代,并且它的使用非常简单discouraged@Mihai它在sql server上工作。marc_感谢您的输入,根据下面Rich Benner的解决方案,已更改为join。这在sql server上是否起作用?在ANSI-92 sql标准(20多年前)中,旧样式的逗号分隔表格列表样式已被正确的ANSI
join
语法所取代,其使用已不再有效discouraged@Mihai它在sql server上工作。marc_感谢您的输入,已根据下面Rich Benner的解决方案更改为加入。Up投票支持建议适当(非史前)
join
Syntax感谢关于加入的额外建议@RichUp投票支持建议适当(非史前)
join
Syntax感谢关于加入的额外建议@RichThanke给出答案@Rocky。我在下面更改了Rich Benners的公认答案,因为他确实提供了使用联接的额外建议。你还有我的投票:)谢谢你的回答@Rocky。我在下面更改了Rich Benners的公认答案,因为他确实提供了使用联接的额外建议。你还有我的一票:)