我有一个具有特定结构的调查数据库(以允许在同一数据库中进行多个不同的调查):每个受访者针对他们回答的每个问题获得一行,而不是针对每个问题获得多列的一行。像这样:
Respondent|Question|Answer| Broker | Year |
----------|--------|------|----------|------|
Person1 | a | 2 | Broker X | 2018 |
Person1 | b | 3 | Broker X | 2018 |
Person1 | c | 5 | Broker X | 2018 |
Person2 | a | 5 | Broker X | 2018 |
Person2 | a | 3 | Broker Y | 2018 |
我可以使用“ GROUP BY”运行基本查询,以得到一个表,对2018年每个问题的每个经纪人进行排名。但是,鉴于上述结构,可以在同一表中同时获得2018年和每个经纪人2017年?还是在逻辑上不可能?
谢谢!
编辑:对不起,还不清楚。我想在一栏中获得2018年的得分,而在另一栏中获得2017年的得分。
答案 0 :(得分:0)
是的。而不是按年份分组,只需在where子句中限制为2017/2018,例如
GROUP BY Broker
WHERE [Year] in (2017,2018)
答案 1 :(得分:0)
(编辑)我假设“分数”是记录数-如果您想对所有“答案”求和,然后在以下案例中将1
替换为answer
)>
您的意思是这样的吗?
select
broker,
Results2017 = sum(case when Year=2017 then 1 else 0 end)
Results2018 = sum(case when Year=2018 then 1 else 0 end)
from
survey
where
Year in (2017,2018)
group by
broker
order by
/* this will order by 2018 descending (3rd column) */
3 desc
这应该给您:
broker | Results2017 | Results2018
bob | 2 | 4
Fred | 6 | 2
Sue | 4 | 1