2

SQLServerで助けが必要です

以下のようなテーブル行がいくつかあります。

ID   Name          status  
1    viral/AHD     Yes  
2    viral/AHD     No  
3    joe/US        Yes  
4    thomas/IND    Yes   
5    jack/IND      No  

ここで、列が異なる行Name、つまり3番目、4番目、5番目の行と、重複してNameいるstatusYes.. である行を選択します。

したがって、私の最終的な答えは次のようになります。

ID   Name          Status  
1    viral/AHD     Yes  
3    joe/US        Yes  
4    thomas/IND    Yes  
5    jack/IND      No 
4

1 に答える 1

2

SQL 2005 以降を使用している場合。次に、これが役立つ場合があります:

;WITH CTE
AS
(
    SELECT
        ROW_NUMBER() OVER(PARTITION BY Name 
                     ORDER BY 
                    (CASE WHEN status='Yes' THEN 0 ELSE 1 END)) AS RowNbr,
        Table1.*
    FROM
        Table1
)
SELECT
    *
FROM
    CTE
WHERE
    CTE.RowNbr=1

編集

またはさらに簡単です。このような:

;WITH CTE
AS
(
    SELECT
        ROW_NUMBER() OVER(PARTITION BY Name 
                    ORDER BY status DESC) AS RowNbr,
        Table1.*
    FROM
        Table1
)
SELECT
    *
FROM
    CTE
WHERE
    CTE.RowNbr=1

参考資料:

于 2012-05-09T11:10:20.073 に答える