Mssql查询问题
我有一个MSSQL数据库和以下表格 WHE 项目 当我执行查询时Mssql查询问题,sql,sql-server,Sql,Sql Server,我有一个MSSQL数据库和以下表格 WHE 项目 当我执行查询时 select [Bin Code], sum([Quantity]) from dbo.[whe] where [Item No_]='0000955'GROUP BY [Bin Code] 获取返回的结果 +----------+----------+ | Bin Code | Quantity | +----------+----------+ | K2-3-3 | -3 | +----------+----
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子句中
如果要将
项目编号和Desc
添加到输出中,则必须按照错误说明将它们包括在分组依据中
select [Item No_], [Desc], [Bin Code], sum([Quantity])
from dbo.[whe] w
inner join dbo.[Item] i
on w.[Item No_] = i.[Item No_]
group by [Item No_], [Desc], [Bin Code]
如果要显示desc列,可以使用下面的查询
select t1.[Bin Code],t1.[Quantity],t1.[Item No_],t2.[Desc] (select [Bin Code],
sum([Quantity]) as [Quantity],[Item No_]
from dbo.[whe]
where [Item No_]='0000955'GROUP BY [Bin Code],[Item No_] ) t1
left join dbo.[Item] t2
on (t1.[Item No_]=t2.[Item No_])
您是否也可以发布预期的输出?如果您想在使用GROUP BY时选择列,则它们需要是GROUP BY子句的一部分或在聚合函数中(例如:SUM)。或者你需要重新思考你的方法,也许考虑一下和函数的窗口函数版本。并且您的查询有>2个错误:,
之前来自<代码>旧式连接
;最后一个和
必须更改为
上的(如果您保持旧式连接,则在哪里
);错误的聚合和。继续。。。。
select [Item No_], [Desc], [Bin Code], sum([Quantity])
from dbo.[whe] w
inner join dbo.[Item] i
on w.[Item No_] = i.[Item No_]
group by [Item No_], [Desc], [Bin Code]
select t1.[Bin Code],t1.[Quantity],t1.[Item No_],t2.[Desc] (select [Bin Code],
sum([Quantity]) as [Quantity],[Item No_]
from dbo.[whe]
where [Item No_]='0000955'GROUP BY [Bin Code],[Item No_] ) t1
left join dbo.[Item] t2
on (t1.[Item No_]=t2.[Item No_])