我有一个查询与联合声明,只是为了检查案例,但我想实现CASE在哪里,但我是初学者到SQL,不知道我该怎么做。如何使用SQL中的CASE优化查询
我的查询像
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
其中 “IMT” 的别名从何而来?我认为你的代码中缺少一些东西。 – 2012-07-20 11:47:32
我也认为内部联盟要么缺少其他信息,要么构建不正确。为什么有些没有订购,有些是按日期列升序排列的,有些是按日期列降序排列的?也许不是告诉我们你想要解决这个有问题的查询,你可以向我们展示你的表格结构,样本数据和期望的结果。这似乎不是在一张表中找到单行的正确方法。 – 2012-07-20 11:57:15