2

PersonalLastNameMaybeUniqueID. _ 列に設定されたカウンターが複数の行を与えるLastName列を持つテーブルを出力したいと考えています。MaybeUniqueID

  • ステップの途中での出力を避けて、すべてを 1 回の実行で実行したいと考えています。
  • 一時テーブルまたはテーブル変数を使用しないことを好みます。それ以外の場合は、最大で 1 つのテーブル変数 (一時テーブルではない) を使用したいと思いますが、これは必要ではないと思います。
  • Microsoft SQL Server 2005 を使用しています。

HAVINGまたは などのさまざまな SQL ステートメントを使用してさまざまなシナリオを試しGROUP BYましたが、探している結果を得ることができませんでした。次の動作しない要約テストを見てください。

SELECT LastName
FROM   Personal
       JOIN
              (SELECT  MaybeUniqueID AS ID2,
                       COUNT(*)      AS CNT
              FROM     Personal
                       --WHERE CNT > 1
              GROUP BY MaybeUniqueID
              HAVING   cnt > 1
              ) AS MultiMaybeUniqueID
       ON     Personal.MaybeUniqueID = MultiMaybeUniqueID.ID2
4

1 に答える 1

4

HAVING cnt > 1する必要がありますHAVING COUNT(*) > 1

ORDER BY列の別名は、句ではなく句でのみ参照できますHAVING

使用することもできますが

;WITH T AS
(
SELECT LastName,
       COUNT(*) OVER (PARTITION BY MaybeUniqueID) AS Cnt
FROM Personal
)
SELECT LastName
FROM T 
WHERE Cnt > 1
于 2012-08-17T14:49:59.203 に答える