【发布时间】:2012-11-15 03:34:59
【问题描述】:
我有这个查询:
SELECT A, B, C
FROM ( SELECT
lla.id as A,
max(decode(lla.attrid, 2, lla.valstr, null)) as B,
max(decode(lla.attrid, 3, lla.valstr, null)) as C
FROM
llattrdata lla,
llattrdata lla2
WHERE
lla.id = lla2.id
GROUP BY lla.id)
WHERE C = "Yes"
有没有更好的方法来做到这一点?我尝试使用 HAVING 子句,但无法使其对列 C="Yes" 起作用。提前致谢。
【问题讨论】:
-
这是无效的 SQL,除非您确实有一个名为
Yes的列。派生表(它不是子查询)没有任何处理开销,它只是语法糖,所以不用担心。
标签: sql oracle select subquery