我这里有问题。问题是我有一个名为MOSTEP
的表,在此表中有一个名为MOID
的列。我需要做的是检查重复值,我的意思是,例如,在表中有这些值:
10, 9, 8, 6, 9, 5, 2 10
我需要检查表格中MOID
的所有值,然后做两件事情,条件的细节与这些问题无关,所以我省略了它们:
我知道如何使用
检查重复和不重复的值COUNT(MOID)
但是,我不知道如何在同一个查询中检查这一点并使其有效。
我正在考虑使用两个游标,一个存储所有重复的值,然后只获取每一行,另一个执行相同的操作但使用非重复的值。但我听说游标并不总是最好的选择
我还考虑在IF
内执行CASE
或SELECT
条件,但我不确定如何做到这一点。
如果有人可以帮助我,我会非常感激
答案 0 :(得分:3)
听起来没有任何理由为此使用光标。
您可以有效地使用COUNT()
OVER()
和CASE
:
;WITH cte AS (SELECT *,COUNT(MOID) OVER(PARTITION BY MOID) MOID_CT
FROM MOSTEP)
SELECT MOID
,CASE WHEN MOID_CT = 1 THEN 'Something' ELSE 'SomethingElse' END
FROM cte
演示:SQL Fiddle