【发布时间】:2014-02-22 10:10:04
【问题描述】:
我有 1 个字段参与,其返回类型为位,在我的数据库中,我想对所有位求和并创建一个新列。目前它有效,但我得到了错误的数据。
SELECT ID, Participation......,SUM(CASE WHEN NoOfParticipation = 1 THEN 1 ELSE 0 END)
AS NoOfParticipation1, SUM(CASE WHEN NoOfParticipation = 0 THEN 1 ELSE 0 END)
AS NoOfParticipation0 from table1 INNER JOIN table2 on ID=ID
group by ID, Participation ......;
这些是我数据库中的记录:
ID||Participation
1 0
1 0
1 0
我正在寻找这样的东西:
ID||Participation||NoOfParticipation1 ||NoOfParticipation0
1 0 0 3
但目前我得到:
ID||Participation||NoOfParticipation1 ||NoOfParticipation0
1 0 0 1 - this should be 3
. - further down the list i have records with the same ID
.
1 0 0 1
1 0 0 1
【问题讨论】:
-
您的查询和结果不匹配:查询有列 field1、field2、field3 ... NoOfParticipation1、NoOfParticipation0,而结果有列 ID、Participation、NoOfParticipation1、NoOfParticipation0
-
我已经更新了我的问题。
-
您能否添加一些示例数据和一个实际重现问题的查询(当前查询不可能正确,因为它有一个连接
ID = ID- 所以要么只有一个表实际上有一个@987654326 @ 列和它的笛卡尔变相加入,或者我们缺少部分)
标签: sql inner-join aggregate-functions