列 'tbl_Stock.Item_Name' 在 select 列表中无效,因为它未包含在聚合函数或 GROUP BY 子句中

Column 'tbl_Stock.Item_Name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause

我有一个名为 tbl_stock 的数据库 table。

例如:

Order_ID  Item_Name  Item_Stock  Item_Dispatched  Item_Avaliable 
........  .......... ..........  ...............  ..............
1           abc           10            2               8
2           abc           13            7               6
3           abc           23            10              13
4           xyz           43            12              31
5           xyz            4            1               3

我想在 gridview 中得到一个输出,如下所示:

Item_Name  Item_Stock  Item_Dispatched  Item_Avaliable 
.........  ..........  ...............  ..............
abc           46            19              27
xyz           47            13              33

我想计算特定的列值。使用下面给出的 SQL 查询时显示一个错误。错误是“Column 'tbl_Stock.Item_Name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

SQL :

SELECT DISTINCT Item_Name, 
COUNT(Item_Stock) AS Item_Stock, 
COUNT(Item_Dispatched) AS Item_Dispatched, 
COUNT(Item_Avaliable) AS Item_Avaliable 
FROM tbl_Stock

如错误所述,添加 GROUP BY 以计算每个项目的总计

SELECT /*DISTINCT*/ Item_Name, 
SUM(Item_Stock) AS Item_Stock, 
SUM(Item_Dispatched) AS Item_Dispatched, 
SUM(Item_Avaliable) AS Item_Avaliable 
FROM tbl_Stock
GROUP BY Item_Name

在 DISTINCT 中也不需要。

COUNT() 函数将 return 数字或行(Item_Stock、Item_Dispatched 和 Item_Avaliable 列中的 abc 项为 3,xyz 为 2),所以为了得到想要的结果改变它并使用 SUM()

按子句添加分组而不是不同的,例如:

SELECT Item_Name, 
SUM(Item_Stock) AS Item_Stock, 
SUM(Item_Dispatched) AS Item_Dispatched, 
SUM(Item_Avaliable) AS Item_Avaliable 
FROM tbl_Stock
GROUP BY Item_Name

它将按 Item_Name 对所有记录进行分组,并对每一列进行 SUM。