数据库表将一个表的列PIVOT,UNPIVOT 应用小示例


CREATE TABLE [dbo].[Table_per1](
 [id] [int] NOT NULL,
 [name] [nvarchar](1000) NOT NULL,
 [sex] [nchar](10) NULL,
 [age] [int] NULL,
 [CH] [float] NULL,
 [Math] [float] NULL,
 [Brith] [datetime] NULL
) ON [PRIMARY]

GO


insert     Table_per1     (id,name,sex,age,CH,Math,Brith)          values     (     1,'a','a         ',23,88,90,'2010-01-10 00:00:00.000')
insert     Table_per1     (id,name,sex,age,CH,Math,Brith)          values     (     2,'b','c         ',34,89,91,'2010-01-10 00:00:00.000')
insert     Table_per1     (id,name,sex,age,CH,Math,Brith)          values     (     3,'c','b         ',16,90,92,'2010-01-10 00:00:00.000')

 

SELECT  *
FROM    Table_per1
go
SELECT  *
FROM    ( SELECT    id ,
                    name ,
                    sex ,
                    age ,
                    CH ,
                    Math ,
                    Brith
          FROM      dbo.Table_per1
        ) a PIVOT( AVG(age) FOR ch IN ( [88], [89], [90] ) ) AS b
       
go    

SELECT  id ,
        name ,
        SUBJECTs ,
        score
FROM    ( SELECT    id ,
                    name ,
                    sex ,
                    age ,
                    CH ,
                    Math ,
                    Brith
          FROM      dbo.Table_per1
        ) a UNPIVOT( SUBJECTs FOR score IN ( [CH], [Math] ) ) b
 go

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,你的问题中提到了MySQL的转行操作,但是引用的内容是关于SQL Server的。在MySQL中,并没有内置的UNPIVOT函数,但是可以使用UNION操作实现类似的功能。下面是一个示例: ``` SELECT 姓名, '语文' AS 课程, 语文 AS 分数 FROM tb UNION ALL SELECT 姓名, '数学' AS 课程, 数学 AS 分数 FROM tb UNION ALL SELECT 姓名, '物理' AS 课程, 物理 AS 分数 FROM tb; ``` 以上查询将会将tb中的数据从转换成行,并分为姓名、课程和分数三。每个UNION ALL子句一个转换的。 请注意,这只是一种在MySQL中实现转行的方式之一,具体的实现方式可能因数据库版本和结构而有所不同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SQL知识点之转行Unpivot函数](https://blog.csdn.net/weixin_30420045/article/details/113437799)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [T-Sql语法:行转pivot)和转行(unpivot)](https://blog.csdn.net/weixin_35975406/article/details/113437796)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值