你好我想要的是写一个查询,它将获取3列: -
是否有可能,我收到以下错误: -
Msg 8120,Level 16,State 1,Line 1 列'tablename.columnname'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
以我希望获得的格式获取数据的正确程序是什么。
修改
Jaques的回答有效,但我得不到我想要的东西。我想要的是:
column 1 PID | column 2 SID | column 3 | column 4 | Column 5(Total of 4)
-------------------------------------------------------------------------
1 | 1 | ABC | 125.00 | 985.00
2 | 2 | XYZ | 420.00 |
3 | 3 | DEF | 230.00 |
4 | 4 | GHI | 210.00 |
答案 0 :(得分:1)
我怀疑您在某些列上使用了某些聚合函数,而没有在group by子句中列出剩余的列。您的查询应该如下所示。
select sum(column2), column1 from table1
group by column1
答案 1 :(得分:0)
您可以通过以下方式执行此操作,因为您需要在组中添加所有非聚合值,这会使其变得困难
Select column1, column2, SUM(column2) OVER (PARTITION BY column1) as Total from [Table]
这应该有用。
您可以使用已编辑答案中的子选项进行此操作,但为什么要这样?
Select Column1, Column2, Column3, Column4, (Select SUM(Column4) from Table) as Column 5 from Table
答案 2 :(得分:0)
您必须在select
和group by
子句中包含相同的列。
如果要对包含所有值的列求和,则必须在select子句中包含每行具有不同值的列,如下所示:
SELECT columnId, sum(column4) as total
FROM MyTable
GROUP BY columnId
或者根本不包括选择任何额外的列,如下所示:
select sum(column4) from MyTable