Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于过滤器的SQL聚合列_Sql_Sql Server_Select_Sum - Fatal编程技术网

基于过滤器的SQL聚合列

基于过滤器的SQL聚合列,sql,sql-server,select,sum,Sql,Sql Server,Select,Sum,我的数据有一个ID、日期和积分字段。每行代表ID在该日期获得的分数 我想创建类似于此的内容: ID|一月的积分|二月的积分|三月的积分 结果应该是GROUP BYID。1月份获得的分数应该是该ID在1月份获得的所有分数的SUM 如何执行此操作?您可以使用条件聚合: select id, (case when date >= '2020-02-01' and date < '2020-03-01' then points else 0 end) as points_feb

我的数据有一个ID、日期和积分字段。每行代表ID在该日期获得的分数

我想创建类似于此的内容:

ID|一月的积分|二月的积分|三月的积分

结果应该是
GROUP BY
ID。1月份获得的分数应该是该ID在1月份获得的所有分数的
SUM


如何执行此操作?

您可以使用条件聚合:

select id,
       (case when date >= '2020-02-01' and date < '2020-03-01' then points else 0 end) as points_feb,
       (case when date >= '2020-03-01' and date < '2020-04-01' then points else 0 end) as points_mar
from t
group by id;
选择id,
(日期>='2020-02-01'和日期<'2020-03-01'的情况下,其他0点结束)作为2月的点,
(当日期>='2020-03-01'和日期<'2020-04-01'时,则为0点结束)作为点
从t
按id分组;