数据中数据是这样保存,怎么通过sql实现下面样式的统计表?

u010032636 2019-08-11 10:26:11
数据中数据是这样保存,能不能通过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
...全文
112 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
stelf 2019-08-14
  • 打赏
  • 举报
回复
典型的行转列问题
独木成林_ 2019-08-12
  • 打赏
  • 举报
回复
引用 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)
https://bbs.csdn.net/topics/393111123寫好了,請指教。
二月十六 版主 2019-08-11
  • 打赏
  • 举报
回复
--测试数据
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)


34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧