1

2 つの SQL SELECT ステートメントの結果を 1 つのステートメントとして結合し、両方が同じテーブルに対してクエリを実行し、同じ列で値を検索することは可能ですか?

タスクの ID を取得したいのですが (これで問題ありません)、特定の値を 2 つの別々の列にフィルターで除外したいと考えています。

現在、私は2つのデータを別々に取得しています:

 SELECT id, string_value as Station FROM table WHERE datatype= 'station'

(列のデータ型を表示する必要はありません)

次のようなものを返します。

id            Station
task1         station1
task2         station2

そして、私は持っています

SELECT id, string_value as RespondingAction FROM table 
 WHERE datatype='RespondingAction'

戻る:

id             RespondingAction
task1          Approve
task2          Decline

基本的にこれら 2 つのクエリを組み合わせたいのですが、どちらも同じ列のデータを検索する方法がわかりません。うまくいけば、最終結果は次のようになります。

id            Station           RespondingAction
task1         station1          Approve
task2         station2          Decline 
task3         station1          Decline
task4         station3          Pending (if null)

これが明確でない場合は申し訳ありません。私はこれが初めてで、これを解決するために最善を尽くしています!

4

2 に答える 2

1
SELECT id, MAX(Station), NVL(Max(RespondingAction), 'Pending')
FROM
  (SELECT id, 
    string_value as Station,
    NULL as RespondingAction
   FROM table
   WHERE dataType = 'station'

   UNION

   SELECT id,
    NULL as Station,
    string_value as RespondingAction
   FROM table
   WHERE dataType = 'RespondingAction')
GROUP By id

編集

交換することもできます

NVL(Max(RespondingAction), 'Pending')

   COALESCE(MAX(RespondingAction), CAST('Pending' AS <the type of column string_value>))
于 2013-02-01T15:04:51.287 に答える
1

使用するCASE

SELECT id, 
   case dataType when 'station' 
                 then string_value else 'Pending' end Station,
   case dataType when 'RespondingAction' 
                 then string_value else 'Pending' end RespondingAction
FROM table WHERE datatype IN ('station','RespondingAction')
于 2013-02-01T15:25:44.787 に答える