我想做这样的事情:
select sum(case ttt.ind = 1 then 1 else 0 end) from ttt
我想在此查询中添加一列,称为myresult
,它指示ttt.istry
的值是否等于1。
也许像:
select
sum(case ttt.ind = 1 then 1, ttt.istry as myresult else 0 end)
from ttt
当然我有一个错误...
我该怎么做?
我的数据是:
ttt.ind | ttt.istry
--------+----------
1 | 0
0 | 1
1 | 1
依此类推...
预期结果:
ttt.ind | ttt.istry | myresult | sum
--------+-----------+----------+------
1 | 0 | 0 | 2
0 | 1 | null | 2
1 | 1 | 1 | 2
您不说是哪个数据库,所以我认为它是一个现代数据库。您可以使用窗口函数和CASE
子句来执行此操作。
例如:
select
ind,
istry,
case when ind = 1 then istry end as myresult,
sum(ind) over() as sum
from ttt
请参见SQL Fiddle的实时示例。
您的逻辑有点难以理解,但是您的结果集提示:
select ind, istry,
(case when istry = 1 then 1
when sum(istry) over (partition by ind) = 1 then 0
end),
sum(ttt.ind) over () as sum_ind
from ttt;