2016-04-11 34 views
0

私はここにいくつかの擬似SQL(任意のDBMSから独立している)を書いています。条件付きのSQLクエリ

select 
    sb.field 
from 
    case 1 
     subquery1 as sb 
    case 2 
     subquery2 as sb 

これは可能ですか?そうでない場合は、それを動作させるための回避策がありますか?

ありがとうございました

+0

あなたの大文字と小文字の値(1,2)を比較して、それが適用されるかどうかを確認しますか?あるいは両方のケースが同時に適用されるべきですか? – trincot

+3

以下の回答をご覧ください:http://stackoverflow.com/questions/646334/is-it-possible-to-use-a-case-statement-in-a-sql-from-clause –

答えて

0

私はあなたがダイナミックテーブルから選択したいと思ったからです。唯一の方法は、私がお勧めしない動的SQLです。代わりに、ケースステートメントを作成して、そこにケースごとにクエリを書くことができます。もちろん、それはあなたが妥当な量のオプションを持っている場合のみです。

0

where句で式を使用して、特定のサブクエリをオフにできます。ほとんどのRDBMSは、常に偽である句を使用してクエリを最適化します。これは、2つのサブクエリが同じフィールドを持つ場合にのみ機能します。

SELECT <fields> 
FROM (
    SELECT <sub1> FROM table1 WHERE <expression which is true if you want sub1> 
    UNION 
    SELECT <sub2> FROM table2 WHERE <expression which is true if you want sub2> 
)