我在子查询中有一个名为Temp的临时表。在此表中,我有user_id,created_on和answer列。答案栏仅包含是或否。
我想:
查找用户是否对不同的created_on日期有不同的答案,如果是这种情况,则比较所有这些答案以查找用户是否曾回答“是”
我看起来像这样的表:
| user_id | created_on | answer |
| 1 | 12/7/2016 | no |
| 1 | 12/6/2016 | no |
| 1 | 12/5/2016 | yes |
| 2 | 11/30/2016 | no |
| 2 | 11/29/2016 | no |
| 3 | 10/1/2016 | yes |
| 4 | 9/2/2016 | no |
输出应如下所示:
| user_id | final_answer |
| 1 | yes |
| 2 | no |
| 3 | yes |
| 4 | no |
我可以想到Self Join来解决这个问题但是有些情况下user_id计数为10.对于只有一个user_id条目的情况,输出应该只从答案列返回该单个记录。如何使用SQL查询解决此问题?
答案 0 :(得分:1)
试试这个。分配1或0,具体取决于他们是否回答是。拿这个总和。如果它大于0意味着他们必须在某个时候回答“是”。
SELECT
user_id,
CASE
WHEN(SUM(CASE WHEN answer = 'yes' THEN 1 ELSE 0 END)) > 0 THEN 'yes'
ELSE 'no'
END AS final_answer
FROM
YourTempTable
GROUP BY user_id