次のようなクエリを作成することは可能ですか?
ソース = 2 またはターゲット = 2 のテーブルから a、b または c、d を選択します。
ソースが 2 の場合は a,b を選択し、ターゲットが 2 の場合は c,d を選択します。
これは SQL ステートメントで可能ですか?
次のようなクエリを作成することは可能ですか?
ソース = 2 またはターゲット = 2 のテーブルから a、b または c、d を選択します。
ソースが 2 の場合は a,b を選択し、ターゲットが 2 の場合は c,d を選択します。
これは SQL ステートメントで可能ですか?
次のような「データベース」(テーブルのひどい名前)というテーブルがあるとします。
a | b | c | d | source | target
------+------+------+------+--------+--------
11 | 22 | 33 | 44 | 1 | 2
111 | 222 | 333 | 444 | 2 | 2
1111 | 2222 | 3333 | 4444 | 2 | 1
次に、次のようにクエリできます。
select
case when source=2 then a else null end as a,
case when source=2 then b else null end as b,
case when target=2 then c else null end as c,
case when target=2 then d else null end as d
from database;
そしてこの結果を得る:
a | b | c | d
------+------+------+------
| | 33 | 44
111 | 222 | 333 | 444
1111 | 2222 | |
必要に応じて、source=2 の場合は a と b のみが返され、target=2 の場合は c と c が返されます。
あなたはできる:
http://www.postgresql.org/docs/7.4/static/functions-conditional.html
このようなステートメントは、テストするpostgresqlがありませんが、あなたが望むことをするはずです:
SELECT CASE
WHEN source = 2 THEN a, b
WHEN target = 2 THEN c, d
ELSE 0
END
select a,b
from database
where source = 2
union
select c,d
from database
where target = 2
実際の例については、ここを確認してください
これはどう:
select a,b,c,d from (select a,b from database where source=2 UNION select c,d from database where target=2)