对布尔值求和,然后仅在一定计数后显示
Sum Booleans and then display only over a certain count
我一直在用头撞墙。
我有一个 table DwgID
(integer
) 和 Current
(boolean
) 作为 table 的一部分。
我想做的是仅过滤选择了 1 个以上 Current
的 DwgID
。
这段代码给出了正确的计数:
`SELECT "DwgID", SUM( CASE WHEN "Current" = 1 THEN 1 ELSE 0 END ) "Current" FROM "tblRev" GROUP BY "DwgID"`
但是,如果我尝试在 Current Count is > 1
中添加一个标准,它会失败,无法加载数据内容。
`SELECT "DwgID", SUM( CASE WHEN "Current" = 1 THEN 1 ELSE 0 END ) "Current" FROM "tblRev" GROUP BY "DwgID" HAVING ( ( SUM( CASE WHEN "Current" = 1 THEN 1 ELSE 0 END ) > 1 ) )`
我做错了什么?
您需要选择一个不同的别名,因为 Current
是列名。让我们称它为 NumCurrent
。
SELECT "DwgID", SUM( CASE WHEN "Current" = 1 THEN 1 ELSE 0 END ) "NumCurrent" FROM "tblRev" GROUP BY "DwgID" HAVING ( ( SUM( CASE WHEN "Current" = 1 THEN 1 ELSE 0 END ) > 1 ) )
我一直在用头撞墙。
我有一个 table DwgID
(integer
) 和 Current
(boolean
) 作为 table 的一部分。
我想做的是仅过滤选择了 1 个以上 Current
的 DwgID
。
这段代码给出了正确的计数:
`SELECT "DwgID", SUM( CASE WHEN "Current" = 1 THEN 1 ELSE 0 END ) "Current" FROM "tblRev" GROUP BY "DwgID"`
但是,如果我尝试在 Current Count is > 1
中添加一个标准,它会失败,无法加载数据内容。
`SELECT "DwgID", SUM( CASE WHEN "Current" = 1 THEN 1 ELSE 0 END ) "Current" FROM "tblRev" GROUP BY "DwgID" HAVING ( ( SUM( CASE WHEN "Current" = 1 THEN 1 ELSE 0 END ) > 1 ) )`
我做错了什么?
您需要选择一个不同的别名,因为 Current
是列名。让我们称它为 NumCurrent
。
SELECT "DwgID", SUM( CASE WHEN "Current" = 1 THEN 1 ELSE 0 END ) "NumCurrent" FROM "tblRev" GROUP BY "DwgID" HAVING ( ( SUM( CASE WHEN "Current" = 1 THEN 1 ELSE 0 END ) > 1 ) )