Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 2008_Group By - Fatal编程技术网

Sql 汇总共享公共值但具有唯一行标识符的多个事务

Sql 汇总共享公共值但具有唯一行标识符的多个事务,sql,sql-server-2008,group-by,Sql,Sql Server 2008,Group By,我目前正在处理一个数据集,该数据集有大量的唯一组,每个组中可能有一对多的唯一行,用于描述适用于该组的事务类型。交易类型数量有限,每笔交易有一个(n): 数量 位置 日期 数据集将如下所示: 我希望它将所有组合并到一行中,并为每种类型的事务设置三列。我试图让最终结果看起来像这样: 我得到的最接近的结果是,在寻找唯一密钥的同时,根据声明编号尝试大量连接。不幸的是,我的结果是这样的: 关于如何使每个唯一组在结果中只有一行、三种类型分散、每种类型有三列的建议?您可以通过条件聚合来完成这一切:

我目前正在处理一个数据集,该数据集有大量的唯一组,每个组中可能有一对多的唯一行,用于描述适用于该组的事务类型。交易类型数量有限,每笔交易有一个(n):

  • 数量
  • 位置
  • 日期
数据集将如下所示:

我希望它将所有组合并到一行中,并为每种类型的事务设置三列。我试图让最终结果看起来像这样:

我得到的最接近的结果是,在寻找唯一密钥的同时,根据声明编号尝试大量连接。不幸的是,我的结果是这样的:


关于如何使每个唯一组在结果中只有一行、三种类型分散、每种类型有三列的建议?

您可以通过条件聚合来完成这一切:

select   grp,
         sum(case when type = 'S' then amount else null end) as type_s_amt,
         min(case when type = 'S' then location else null end) as type_s_loc,
         min(case when type = 'S' then date else null end) as type_s_dt,
         sum(case when type = 'O' then amount else null end) as type_o_amt,
         min(case when type = 'O' then location else null end) as type_o_loc,
         min(case when type = 'O' then date else null end) as type_o_dt,
         sum(case when type = 'F' then amount else null end) as type_f_amt,
         min(case when type = 'F' then location else null end) as type_f_loc,
         min(case when type = 'F' then date else null end) as type_f_dt
from     tbl
group by grp

小提琴:

这正是我需要的-谢谢!现在,要了解更多关于条件聚合的信息。。。