【问题标题】:Mssql query problemsmssql查询问题
【发布时间】: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


【解决方案1】:

如果您想将Item No_Desc 添加到输出中,则必须按照错误说明将它们包含在group by 中。

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]

【讨论】:

    【解决方案2】:

    如果要显示 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_])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 2012-05-31
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      相关资源
      最近更新 更多