【发布时间】:2016-05-13 09:22:34
【问题描述】:
我有一个 MSSQL 数据库和以下表格
什么时候
+----------+----------+----------+
| Item No_ | Bin Code | Quantity |
+----------+----------+----------+
| 0000955 | K2-3-3 | -2 |
+----------+----------+----------+
| 0000955 | C2-2-4 | 3 |
+----------+----------+----------+
| 0000955 | K2-3-3 | 5 |
+----------+----------+----------+
| 0000955 | K2-3-3 | 1 |
+----------+----------+----------+
| 0000955 | C2-2-4 | -1 |
+----------+----------+----------+
| 0000955 | K2-3-3 | -10 |
+----------+----------+----------+
| 0000955 | C2-2-4 | 7 |
+----------+----------+----------+
| 0000955 | K2-3-3 | 3 |
+----------+----------+----------+
| 0000955 | C2-2-4 | 8 |
+----------+----------+----------+
物品
+----------+--------+
| Item No_ | Desc |
+----------+--------+
| 0000054 | Spring |
+----------+--------+
| 0000087 | Ring |
+----------+--------+
当我执行查询时
select [Bin Code],
sum([Quantity])
from dbo.[whe]
where [Item No_]='0000955'GROUP BY [Bin Code]
获取返回结果
+----------+----------+
| Bin Code | Quantity |
+----------+----------+
| K2-3-3 | -3 |
+----------+----------+
| C2-2-4 | 17 |
+----------+----------+
但我需要这样的东西才能工作
select we.[Bin Code],
sum(we.[Quantity]),
it.[Item No_],
it.[Desc],
from dbo.[whe] as we,
dbo.[item] as it
and it.[No_]=we.[Item No_]
我想要这样的结果
+-----------------+--------+----------+----------+
| Item No_ | Desc | Bin Code | Quantity |
+-----------------+--------+----------+----------+
| 0000955 | Valve | K2-3-3 | -3 |
+-----------------+--------+----------+----------+
| 0000955 | Valve | C2-2-4 | 17 |
+-----------------+--------+----------+----------+
但是查询是不可执行的并且得到像
这样的错误选择列表中的“dbo.Item.No_”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
【问题讨论】:
-
你也可以发布预期的输出吗??
-
如果您想在使用 GROUP BY 时选择列,它们需要是 GROUP BY 子句的一部分或在聚合函数中(例如:SUM)。或者您需要重新考虑您的方法,并可能考虑 SUM 的窗口函数版本。
-
您的预期结果。并且您的查询有 > 2 个错误:
,before from;old style join;最后and必须更改为on(如果您保持旧式加入,则where);坏聚合sum。待续......
标签: sql sql-server