所以我刚开始处理案例陈述。没有第二种情况(状态),我得到了完美的工作。在查询结果中,“VWD”列中几乎总是有数字。现在我想根据第一种情况使用第二种情况。在这个网站上得到了它的代码。无论我做什么,“状态”列始终为(null)。如果我对第二种情况使用else,它将始终使用else中的值。
我做错了什么?
Card
先谢谢你的帮助!
答案 0 :(得分:0)
您需要将其移动到子查询中。这可能就是你要找的东西:
SELECT fallid,
fallaufndatum,
fallentldatum,
aufnahmeart,
entlassart,
drg,
ugvwd,
mvwd,
ogvwd,
VWD,
CASE
WHEN VWD = 16
THEN 'Grün'
END AS Status
FROM
(
SELECT f.fallid,
f.fallaufndatum,
f.fallentldatum,
f.aufnahmeart,
f.entlassart,
fd.drg,
k.ugvwd,
k.mvwd,
k.ogvwd,
CASE
WHEN f.fallentldatum IS NULL
THEN ROUND(sysdate - f.fallaufndatum, 0)
ELSE f.fallentldatum - f.fallaufndatum
END AS VWD
FROM tblfall f
JOIN tblfalldrginfo fd ON f.fallid = fd.fallid
JOIN katdrg k ON fd.drg = k.code
AND fd.drgkatalog = k.katalog
WHERE (sysdate - f.fallaufndatum) <= 1000
) As X
答案 1 :(得分:0)
问题是您的查询不知道字段名称,因为所有字段都是同时创建的。所以你的第二个案例不承认VWD。 p>
您可以在子查询中使用Siyual选项或重复该案例。
CASE
WHEN f.fallentldatum IS NULL
THEN ROUND(sysdate - f.fallaufndatum, 0)
ELSE f.fallentldatum - f.fallaufndatum
END AS VWD,
CASE
WHEN ( CASE
WHEN f.fallentldatum IS NULL
THEN ROUND(sysdate - f.fallaufndatum, 0)
ELSE f.fallentldatum - f.fallaufndatum
END )= 16
THEN 'Grün'
END AS Status