2017-04-25 11 views
1

私は写真のイメージをSQL Serverデータベースに保存しています。画像は、PhotoTypeという列を使用して保存されます。SQLクエリを使用してテーブルの条件に応じて特定の行数を選択するにはどうすればよいですか?

フォトタイプは多い - そのうちのいくつかは以下のとおりです。

CheckList, Installation, Audit, SignOff ... 

今私は(チェックリストについては写真2枚、インストールの写真2枚、監査およびサインオフのための1写真1枚の写真は、データベースから選択することにしたいです顧客ごとに)。

データベースには顧客の写真がたくさんあるかもしれませんが、選択する写真は全部で6枚です。

SQL照会でこれを行うにはどうすればよいですか?使用

おかげに関して

クリシュナ

答えて

0

common table expressionrow_number()有する:

;with cte as (
    select * 
    , rn = row_number() over (
     partition by Customer, PhotoType 
     order by Id) 
    from Photo 
    where PhotoType in ('CheckList','Installation','Audit','SignOff') 
) 
select * 
from cte 
where rn = 1 
    or (rn = 2 and PhotoType in ('CheckList','Installation'); 

代わりcteの(派生テーブル)サブクエリを使用する:

select * 
from (
    select * 
    , rn = row_number() over (
     partition by Customer, PhotoType 
     order by Id) 
    from Photo 
    where PhotoType in ('CheckList','Installation','Audit','SignOff') 
) as sub 
where rn = 1 
    or (rn = 2 and PhotoType in ('CheckList','Installation'); 
+0

SqlZim、ありがとう。それは完璧に働いた。 – nkrishna

+0

@nkrishna喜んで助けてください! – SqlZim

0
select top 2 * from temp# where [Type]='CheckList' 
    union all 
    select top 2 * from temp# where [Type]='Installation' 
    union all 
    select top 1 * from temp# where [Type]='Audit' 
    union all 
    select top 1 * from temp# where [Type]='SignOff' 
+0

このコードスニペットは歓迎されていますが、何か助けを与えるかもしれませんが、*どうやって質問に対処するのかは説明を含めれば大幅に改善されます(// meta.stackexchange.com/q/114762)。それがなければ、あなたの答えははるかに教育的価値が低くなります。あなたが今質問している人だけでなく、将来の読者の質問に答えていることを忘れないでください!説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –

関連する問題