嗨我想输出类似下面的东西,但我发现有很多代码重复正在进行。sql case语句中的代码重复
| australian_has_itch | kiwi_has_itch |
| yes | no |
| no | n/a |
| n/a | no |
...
我的查询看起来像这样与做同样的事情,但翻转国家二级case语句(我真正的查询有这些case语句5):
SELECT
CASE
WHEN
NOT EXISTS (
SELECT person_id
FROM people_with_skin
WHERE people_with_skin.person_id = people.person_id
AND people.country = "Australia"
)
THEN 'N/A'
WHEN
EXISTS (
SELECT person_id
FROM itch_none_to_report
WHERE people.country = "Australia"
AND person_id = people.person_id
)
THEN 'None to report'
WHEN
EXISTS (
SELECT person_id
FROM itchy_people
WHERE people.country = "Australia"
AND person_id = people.person_id
)
THEN 'Yes'
ELSE 'No'
END australian_has_itch,
CASE
WHEN
NOT EXISTS (
SELECT person_id
FROM people_with_skin
WHERE people_with_skin.person_id = people.person_id
AND people.country = "NZ"
)
THEN 'N/A'
WHEN
EXISTS (
SELECT person_id
FROM itch_none_to_report
WHERE people.country = "NZ"
AND person_id = people.person_id
)
THEN 'None to report'
WHEN
EXISTS (
SELECT person_id
FROM itchy_people
WHERE people.country = "NZ"
AND person_id = people.person_id
)
THEN 'Yes'
ELSE 'No'
END kiwi_has_itch,
FROM people
有没有办法让我以某种方式压缩它,而不是有太多的代码重复?
谢谢!
你不应该需要做的案例陈述这样的 - 这将是最好的,如果你发布的每个表(S) – 2010-03-23 05:28:58
@NS的几行:有没有特别的你想要这个工作的DBMS,还是你在寻找一个通用的解决方案? – outis 2010-03-23 05:30:49
对不起主题,但跆拳道你建设吗?有皮肤的人?有没有皮肤的人?痒? – 2010-03-23 05:43:24