数据中数据是这样保存,能不能通过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
商家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
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)