对多行上的非数字值进行 SQL 透视

SQL Pivot on non-numeric values on multiple rows

提问人:Lavie 提问时间:3/31/2023 最后编辑:Lavie 更新时间:3/31/2023 访问量:77

问:

我有以下数据:

员工 日期
Emp 1 (英语) 01/01/2023 1.50
Emp 1 (英语) 01/01/2023 7.5 磅
Emp 1 (英语) 02/01/2023 0.00
Emp 1 (英语) 02/01/2023 大小:1.2 kB
Emp 1 (英语) 03/01/2023 7.5 磅

我想对表格进行透视,以便在有多条记录的一天中,每条记录都应该在自己的行上,如下所示:

员工 01/01/2023 02/01/2023 03/01/2023
Emp 1 (英语) 1.50 0.00
Emp 1 (英语) 7.5 磅 1.5磅 7.5 磅

在我每天有多个值之前,我的查询如下:

Select Employee, Date, case when Type = 'A' then Amount else Amount + ' ' +  'LB' end as Amount from Table1 
Pivot (max(Amount) for Dates in ([1],[2],[3],....[30],[31]) as PivotTable

您能协助我如何实现这一目标吗?

sql-server t-sql sql-server-2008-r2

评论

0赞 Thom A 3/31/2023
老实说,我强烈建议您在表示层中执行此操作。在这里,您必须使用动态 SQL,并且缺少列来表示表示的内容会带来问题Amount
0赞 lptr 3/31/2023
您可以根据类型分隔金额。select p.* from ( select Employee, Date, case when Type = 'A' then Amount else Amount + ' ' + 'LB' end as Amount, case when Type = 'A' then 1 else 2 end as tprn from table1 ) as t pivot(max(Amount) for Date in ([01/01/2023], [02/01/2023], [03/01/2023])) as p
0赞 Tushar 3/31/2023
@Lavie : 你确定,你用吗?sql-server-2008-r2
0赞 Lavie 3/31/2023
对不起,它的 2016 年不是 2008 年。我选错了标签
0赞 Alan Schofield 4/2/2023
如何确定值在哪一行?每个员工可以有多少行,是否总是以不同的方式对待仅包含数值的金额?

答: 暂无答案