2017-02-24 2 views
-1

州レベルと国レベルの両方の候補者を選択するにはどうすればよいですか。レベル(状態)。下位レベルを無視して上位レベルのみをフェッチする複雑なselectステートメント

+------+--+--------+-----------+ 
| Name | | Level    | 
+------+--+--------+-----------+ 
| A | | state   | 
| B | | State   | 
| C | | state   | 
| A | | National   | 
+------+--+--------+-----------+ 

クエリは、Aレベルのレコードを国レベルで一度だけ取得する必要があり、状態レベルを無視する必要があります。 ありがとうございます。

答えて

0

あなたは...最高レベルにランクを与え、その後、最も高い方を選択する

スキーマROW_NUMBERを使用することができます。

CREATE TABLE #TAB(Name VARCHAR(50), LevelS VARCHAR(50)) 
INSERT INTO #TAB 
SELECT 'A','state' 
UNION ALL 
SELECT 'B','State' 
UNION ALL 
SELECT 'C','state' 
UNION ALL 
SELECT 'A','National' 

は今

SELECT * FROM (
SELECT ROW_NUMBER() OVER(PARTITION BY Name ORDER BY 
    CASE WHEN LevelS='state' THEN 2 
     WHEN LevelS='National' THEN 1 END) SNO 
,NAME 
,LevelS FROM #TAB 
)A 
WHERE SNO=1 

以下のように選択します結果:

+-----+------+----------+ 
| SNO | NAME | LevelS | 
+-----+------+----------+ 
| 1 | A | National | 
| 1 | B | State | 
| 1 | C | state | 
+-----+------+----------+ 
関連する問題