1

我想根据多列和列中的特定值来计算行数。请检查附表。

计算以下值:

ID Date Action = 'C'

我试过了

COUNT(*) OVER (PARTITION BY ID, Date, Action = 'C') AS Count,但它没有用。你们中有人知道如何计算这个字段吗?

谢谢你。

在此处输入图像描述

4

3 回答 3

0

这是你想做的吗?

select 
     ID, 
     Date, 
     Action, 
     case Action 
         when 'C' then COUNT(*) OVER (PARTITION BY ID, Date)
         else null
     end as count
from your_table
于 2018-12-06T15:59:10.587 回答
0

我想你想要:

SELECT . . .,
       (CASE WHEN Action = 'C'
             THEN COUNT(*) OVER (PARTITION BY ID, Date, Action)
        END) as c_count

这会将计数放在行中Action = 'C'。如果您想要所有行中的计数,则:

SELECT . . .,
       COUNT(CASE WHEN Action = 'C' THEN 1 ELSE 0 END) OVER (PARTITION BY ID, Date) as c_count
于 2018-12-06T16:00:58.550 回答
0

我想你想要:

select t.*,
       (select count(*)
        from table t1
        where t1.date = t.date and t1.id = t.id and t1.action = 'C'
       )
from table t;
于 2018-12-06T16:00:58.847 回答