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更好的方法或技巧来获得上述输出

这一点可以通过使用动态查询来实现

  • 让您的不同类别生成列
  • 使用动态列构建sql字符串
  • 旋转你的专栏

  • 您应该能够在需要求和或计数的地方使用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;