双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

如何将多行数据合并成一行多列,并将结果生成视图

Helen_YM Helen_YM 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
例如:
1长春 1.标准全球通 234
1长春 2.全球通资费套餐 5423
1长春 3.全球通优惠 454
2吉林 1.标准全球通 297
2吉林 2.全球通资费套餐 12
2吉林 3.全球通优惠 29949

要生成的报表要是这样的:

地区 1.标准全球通 2.全球通资费套餐 3.全球通优惠
长春 234 5423 454
吉林 297 12 29949

根据以前的大人们的回复,我找到如下答案:
--建立测试环境
Create Table 表(区域 varchar(100),类型 varchar(100),价格 varchar(100))
--插入数据
insert into 表
select '1长春','1.标准全球通','234' union
select '1长春','2.全球通资费套餐','5423' union
select '1长春','3.全球通优惠','454' union
select '2吉林','1.标准全球通','297' union
select '2吉林','2.全球通资费套餐','12' union
select '2吉林','3.全球通优惠','29949'

--测试语句
DECLARE @SQL VARCHAR(8000)
SET @SQL='SELECT 区域'
SELECT @SQL= @SQL+
',min(CASE WHEN 类型 = ''' + 类型 + ''' THEN 价格 END) [' + 类型 + ']'
FROM (SELECT DISTINCT 类型 FROM 表) A
SET @SQL=@SQL+' FROM 表 GROUP BY 区域'
exec (@SQL)


--删除测试环境
Drop Table 表

但是,我现在的问题是,得到的结果集我需要能够生成视图,因为我需要和其它的视图关联生成一个结果集。
请问,怎么将这段代码生成视图呢?
不好意思,我太笨了,临门一脚,就是不知道怎么踢。
...全文

相关推荐

评论 27
收藏 已收藏
分享
返回顶部
Helen_YM
MS-SQL Server 34,876 成员 254,635 内容