SQL構文に関しては、私は初心者です。
もちろん、たくさんの行と列を持つテーブルがあります:P 次のように見えるとしましょう:
AAA BBB CCC DDD
-----------------------
Row1 | 1 A D X
Row2 | 2 B C X
Row3 | 3 C D Z
ここで、これを組み合わせた高度な選択ステートメントを作成したいと思います(ここでは疑似SQLっぽい):
select 'Test1', * from TABLE Where CCC='D' AND DDD='X'
select 'Test2', * from TABLE Where CCC<>'D' AND DDD='X'
出力は次のようになります。
Test1, 1, A, D, X
Test2, 2, B, C, X
これらの 2 つの選択ステートメントを 1 つの優れた選択ステートメントに結合するにはどうすればよいでしょうか?
以下のように SQL を複雑にするとうまくいきますか (自分の SQL ステートメントに exists ステートメントが含まれているため)。選択を組み合わせる方法を知りたいだけで、それをやや高度なSQLに適用しようとしています。
select 'Test1', * from TABLE Where CCC='D' AND DDD='X' AND exists(select ...)
select 'Test2', * from TABLE Where CCC<>'D' AND DDD='X' AND exists(select ...)
私の REAL SQL ステートメントは次のとおりです。
select Status, * from WorkItems t1
where exists (select 1 from workitems t2 where t1.TextField01=t2.TextField01 AND (BoolField05=1) )
AND TimeStamp=(select max(t2.TimeStamp) from workitems t2 where t2.TextField01=t1.TextField01)
AND TimeStamp>'2009-02-12 18:00:00'
結果が得られます。しかし、最後に AND を追加したこの select ステートメントのコピーと組み合わせて、「ステータス」フィールドを「DELETED」のような文字列に変更したいと考えています。
select 'DELETED', * from WorkItems t1
where exists (select 1 from workitems t2 where t1.TextField01=t2.TextField01 AND (BoolField05=1) )
AND TimeStamp=(select max(t2.TimeStamp) from workitems t2 where t2.TextField01=t1.TextField01)
AND TimeStamp>'2009-02-12 18:00:00'
AND NOT (BoolField05=1)