0

ケースのようにチェックするためにUnionステートメントを使用したクエリがありますが、Wh​​ereにCASEを実装したいのですが、SQLの初心者であり、どうすればよいかわかりません。

私のクエリは次のようなものです

SELECT TOP 1 EndDate
           FROM   (
                      SELECT 1 AS seq,

                             EndDate,

                      FROM   pipeline_rest_envr_info e
                      WHERE  e.tckt_id = imt.tckt_id
                             AND stat = 'INPR'
                      UNION
                      SELECT TOP 1 2 AS seq,

                             EndDate,

                      FROM   pipeline_rest_envr_info e
                      WHERE  e.tckt_id = imt.tckt_id
                             AND stat = 'CMPL'
                      ORDER BY
                             enddate DESC
                      UNION
                      SELECT TOP 1 3 AS seq,

                             EndDate,

                      FROM   pipeline_rest_envr_info e
                      WHERE  e.tckt_id = imt.tckt_id
                             AND stat = 'PLND'
                      ORDER BY
                             strt_dt
                      UNION 
                      SELECT 4 AS seq,

                             NULL,

                      FROM   pipeline_rest_envr_info e
                      WHERE  e.tckt_id = imt.tckt_id
                  ) aa
           ORDER BY
                  aa.seq
4

3 に答える 3

2

SELECT TOP 1 EndDate
FROM (
select (stat = 'INPR' の場合は 1、stat = 'CMPL' の場合は 1
、stat = 'PLND' の場合は 2

それ以外は 4 end
) as seq,EndDate
from pipeline_rest_envr_info e
left outside join table2name imt on e.tckt_id = imt.tckt_id
) aa
ORDER BY
aa.seq

于 2012-07-20T12:31:59.247 に答える
0

SELECT TOP 1 aa.*
FROM (
select (case when condition1 then result1
when condition2 then result2
...
そうでなければ
default_result
end ) as result,... from tablename
) aa
ORDER BY
aa.seq

于 2012-07-20T12:24:48.557 に答える
0

WHERE での CASE の実装は避けてください。代わりに SELECT に適用します。さらに、エイリアスIMTを表すテーブルについて言及していません

SELECT TOP 1 EndDate
FROM (
select
(
stat = 'INPR' の場合は 1
、stat = 'CMPL' の場合は 2
、stat = 'PLND' の場合は 3
、それ以外は 4 end
) as seq,EndDate
from pipeline_rest_envr_info e
内部結合 テーブル名が e にあるものは何でも.tckt_id = imt.tckt_id
) aa
ORDER BY aa.seq

于 2012-07-20T12:40:36.503 に答える