在使用sql时如何进行多项操作?

问题描述 投票:0回答:2

我想做这样的事情:

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
sql case-when
2个回答
0
投票

您不说是哪个数据库,所以我认为它是一个现代数据库。您可以使用窗口函数和CASE子句来执行此操作。

例如:

select
  ind,
  istry,
  case when ind = 1 then istry end as myresult,
  sum(ind) over() as sum
from ttt

请参见SQL Fiddle的实时示例。


0
投票

您的逻辑有点难以理解,但是您的结果集提示:

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;
© www.soinside.com 2019 - 2024. All rights reserved.