0

shortDescフィールドごとに 1 行だけを選択するにはどうすればよいですか? どの行かは気にしませんが、必要なのは 1 行だけです。

私のテーブルの抽出は

|longDescr|shortDesc|
|---------|---------|
| First 1 | first   |
| First 2 | first   |
| First 3 | first   |
| First 4 | first   |
| Second 1| second  |
| Second 2| second  |
| Second 3| second  |
| Second 4| second  |
| Third 1 | third   |
| Third 2 | third   |
| Third 3 | third   |

そして、私が期待しているのはカーソルの結果です:

|longDescr|shortDesc|
|---------|---------|
| First 1 | first   |
| Second 1| second  |
| Third 1 | third   |

SQL クエリの書き方がよくわかりません。何か案は?

4

2 に答える 2

2
Select longDescr,shortDesc from
(Select Row_Number() Over(Partition By shortDesc order by shortDesc) as Rows ,*
 from TableName ) t 
where Rows=1;
于 2013-06-03T07:17:34.307 に答える
1

GROUP BY句を使用してこれを試してください:

SELECT MIN(longDescr) AS longDescr, shortDesc
FROM MyTable
GROUP BY shortDesc

出力:

╔═══════════╦═══════════╗
║ LONGDESCR ║ SHORTDESC ║
╠═══════════╬═══════════╣
║ First 1   ║ first     ║
║ Second 1  ║ second    ║
║ Third 1   ║ third     ║
╚═══════════╩═══════════╝

このSQLFiddleを参照してください

要件に応じて使用MIN()またはMAX()機能できます。

于 2013-06-03T07:16:36.567 に答える