数据中数据是这样保存,能不能通过sql实现下面样式的统计表?其中合作仓库还会经常增加,不是固定数据库数据:
商家id    发货日期   仓库名称
user1     2019/8/8     1号库
user2     2019/8/7     2号库
user2     2019/8/3     1号库
user1     2019/7/8     4号库
user4     2019/8/10    3号库
user3     2019/8/10    3号库
user4     2019/8/11    2号库
统计表样式:商家id      1号库           2号库             3号库         4号库
user1    2019/8/8                                              2019/7/8
user2    2019/8/7      2019/8/7
user3                                              2019/8/10
user4                         2019/8/10     2019/8/10

解决方案 »

  1.   

    --测试数据
    if not object_id(N'Tempdb..#T') is null
    drop table #T
    Go
    Create table #T([商家id] nvarchar(25),[发货日期] Date,[仓库名称] nvarchar(23))
    Insert #T
    select N'user1','2019/8/8',N'1号库' union all
    select N'user2','2019/8/7',N'2号库' union all
    select N'user2','2019/8/3',N'1号库' union all
    select N'user1','2019/7/8',N'4号库' union all
    select N'user4','2019/8/10',N'3号库' union all
    select N'user3','2019/8/10',N'3号库' union all
    select N'user4','2019/8/11',N'2号库'
    Go
    --测试数据结束
    DECLARE @sql VARCHAR(MAX)
    SET @sql = 'select 商家id'
    SELECT  @sql = @sql + ',max(case [仓库名称] when ''' + [仓库名称]
            + ''' then [发货日期] else null end)[' + [仓库名称] + ']'
    FROM    ( SELECT DISTINCT
                        [仓库名称]
              FROM      #T
            ) a
    SET @sql = @sql
        + ' from #T group by 商家id'
    EXEC(@sql)
      

  2.   

    https://bbs.csdn.net/topics/393111123寫好了,請指教。