0

タイプ「f」が存在する場合、同じ Me (メトリック) のタイプ「i」よりもタイプ「f」が選択されている行を選択しようとしています。

から:

╔════╦══════╦═══════╗
║ Me ║  VAL ║  TYPE ║
╠════╬══════╬═══════╣
║  1 ║    0 ║     f ║
║  1 ║    1 ║     i ║
║  2 ║    1 ║     i ║
║  2 ║    0 ║     f ║
║  3 ║    1 ║     i ║
║  4 ║    0 ║     i ║
║  5 ║    0 ║     i ║
╚════╩══════╩═══════╝

得る:

╔════╦══════╦═══════╗
║ Me ║  BIT ║  TYPE ║
╠════╬══════╬═══════╣
║  1 ║    0 ║     f ║
║  2 ║    1 ║     f ║
║  3 ║    1 ║     i ║
║  4 ║    0 ║     i ║
║  5 ║    0 ║     i ║
╚════╩══════╩═══════╝
4

1 に答える 1

6

以下のステートメントROW_NUMBER()は、連番を生成するランキング関数である which を使用します。番号はすべてに対して生成され、MeでソートされTypeます。これは、テーブルにCASEの他の値があると仮定して使用しTYPEます。

SELECT  Me, Val, Type
        FROM    
        (
            SELECT  Me, Val, Type,
                    ROW_NUMBER() OVER (PARTITION BY Me
                                        ORDER BY CASE WHEN Type = 'f' 
                                                    THEN 0 ELSE 1 END) rn
            FROM    tableName
        ) a
WHERE   a.rn = 1
于 2013-09-25T14:32:59.783 に答える