1

2つの特定の列に同じコンテンツがあり、3番目の列に異なるコンテンツがある行を選択する必要がある状況にあります。これまでのところ、2つの類似した列についてこれを取得しました。

SELECT id, Title,
COUNT(*) AS NumOccurrences
FROM Table
GROUP BY id, Title
HAVING ( COUNT(*) > 1 )

次に、このクエリで3番目の個別の列を指定する必要があります。それをラルフと呼びましょう。これは明らかに機能しません:

SELECT id, Title, DISTINCT Ralph,
COUNT(*) AS NumOccurrences
FROM Table
GROUP BY id, Title
HAVING ( COUNT(*) > 1 )

では、何をしますか?

4

2 に答える 2

0
select * from (
    SELECT id, Title, COUNT(*) AS NumOccurrences
    FROM Table t
    GROUP BY id, Title
    HAVING ( COUNT(*) > 1 )
) t
cross apply (
    select distinct Ralph
    from Table
    where id = t.id and Title = t.Title
) t2
于 2013-02-20T10:50:00.043 に答える
0

COUNT(*)はOVER()句で使用できます

 ;WITH cte AS
 (       
  SELECT id, Title, Ralph, COUNT(*) OVER (PARTITION BY id, Title) AS cnt
  FROM dbo.test11
  GROUP BY id, Title, Ralph
  ) 
  SELECT *
  FROM cte
  WHERE cnt > 1

SQLFiddleのデモ

于 2013-02-20T11:09:08.903 に答える