1

是否可以将 2 个 sql SELECT 语句的结果作为一个语句加入,其中两个都查询相同的表,并在同一列中查找值?

我想要一个任务的 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

我想基本上将这两个查询结合起来,但我不确定它们是如何在同一列中查找数据的。希望最终结果是这样的:

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 回答