SQL Server 2008
多数の行があるビューがあり、正確な行を複数回持つことも可能です。すでにROW_NUMBER()OVER(ORDER BY col1)をrow_idとして試しましたが、問題が発生しました。
JOINまたはWHERE句を使用する場合、row_idsは新しい結果セットに動的に調整されます。代わりに必要なのは、JOIN句またはWHERE句を使用せずにビュー内のその行に指定されたrow_id値を表すrow_idです。
何か案は?
編集:私は例を追加しました、投稿する前にそれを行うべきでした。
WHERE句なし:
SELECT ROW_NUMBER()OVER(ORDER BY col1)as row_id、result。*
FROM
(SELECT'Adam' col1、'West' col2
UNION ALL
SELECT'Adam' col1、'Cole' col2
UNION ALL
SELECT'Adam' col1、'West' col2
UNION ALL
SELECT'Danny' col1、'West' col2) 結果
結果:
row_id col1 col2
1 Adam Cole
2 Adam West
3 Adam West
4 Danny West
ここで、WHERE句を使用すると
SELECT ROW_NUMBER()OVER(ORDER BY col1)as row_id、result。*
FROM
(SELECT'Adam' col1、'West' col2
UNION ALL
SELECT'Adam' col1、'Cole' col2
UNION ALL
SELECT'Adam' col1、'West' col2
UNION ALL
SELECT'Danny' col1、'West' col2)結果
WHERE col2 ='West'
結果:
row_id col1 col2
1 Adam West
2 Adam West
3 Danny West
望ましい結果:
row_id col1 col2
2 Adam West
3 Adam West
4 Danny West