Sql 没有求和/计数或更好方法的透视表
我有以下两个表格: 员工表Sql 没有求和/计数或更好方法的透视表,sql,sql-server,pivot-table,Sql,Sql Server,Pivot Table,我有以下两个表格: 员工表 id name 1 John Doe 产品表 id category units 1 Chairs 5 1 Computers 2 1 Pens 40 当我运行以下命令时 Select name, category, units FROM employee JOIN Products ON products.id = employee.id 我得到三行数据: name category units john d
id name
1 John Doe
产品表
id category units
1 Chairs 5
1 Computers 2
1 Pens 40
当我运行以下命令时
Select name, category, units FROM employee
JOIN Products
ON products.id = employee.id
我得到三行数据:
name category units
john doe chairs 5
john doe computers 2
john doe pens 40
我希望我的输出看起来像:
name chairs computers pens
john doe 5 2 40
我尝试了pivot表,但它要求我有一个sum/count字段,但我不想让数据求和。有没有比Pivot更好的方法或技巧来获得上述输出 这一点可以通过使用动态查询来实现
您应该能够在需要求和或计数的地方使用max()函数。如果john doe\chairs有两行不同的单位,您希望得到什么结果?
declare @cols nvarchar(max);
declare @sql nvarchar(1000);
//generate category columns
select @cols =
STUFF((select N'],[' + category
from (select distinct category
from Products) AS t1
FOR XML PATH('')
), 1, 2, '') + N']';
set @sql = N'Select name, units, ' + @cols + N' FROM employee
JOIN Products
ON products.id = employee.id ) t1
pivot
(
max(t1.category)
for t1.category in (' + @cols + N')
) p '
exec sp_executesql @sql;