我知道有一个与此标题相同的问题,但我不确定它是否解决了我的问题。
我的数据如下所示:
ID Current Nxt
1 1A 1B
1 1B 1C
2 2A 2B
3 3A 3B
3 3B
在 Excel '=COUNTIF($B$2:$B$6,C2)' 中使用 countif 我可以让数据看起来像这样(公式在发生的列中):
ID Current Nxt Occurred
1 1A 1B 1
1 1B 1C 0
2 2A 2B 0
3 3A 3B 1
3 3B 0
基本上,我只是想指出 Nxt 预定事件是否实际发生(如果它存在于数据中,则表明它)。
但是,我想在我的 SQL 查询中复制它,如下所示:
SELECT
ID,
Current,
Nxt
FROM
Table
我认为答案可能在于做类似的事情:
sum(case when Current='1B' THEN 1 ELSE 0 END) over (partition by Current)
如此处所建议:Sql Server 等效于 COUNTIF 聚合函数。以上适用于一条记录,但问题是我需要使标准引用 Nxt 列的内容,而不是对其进行硬编码,因为以下内容不起作用:
sum(case when Current=Nxt THEN 1 ELSE 0 END) over (partition by Current)
我想这是因为 Current 和 Nxt 实际上从来没有连续匹配?
作为参考,我的数据库使用 Oracle 11。