SQL查询一个表中根据其中一个列的属性来拼接多个列并SELECT INTO 新表显示

这个博客展示了如何使用SQL查询将具有相同[Group]属性的列合并到一行中,利用LEFT OUTER JOIN和ROW_NUMBER()函数进行数据重组,并通过SELECT INTO创建新表VP_Temp。过程涉及数据填充和存储过程,确保各组数据数量相等,最终形成规整的四列数据结构。
摘要由CSDN通过智能技术生成


--将同一个表中 不同[Group]属性的添加列分成一整行
SELECT * INTO VP_Temp FROM 
(
    SELECT DISTINCT A.ID,A.TypeName,A.ItemType,A.isBad,
    A.sNo sNo1,A.CheckItem CheckItem1,A.BadValue BadValue1,A.[Group] Group1,
    B.sNo sNo2,B.CheckItem CheckItem2,B.BadValue BadValue2,B.[Group] Group2,
    C.sNo sNo3,C.CheckItem CheckItem3,C.BadValue BadValue3,C.[Group] Group3,
    D.sNo sNo4,D.CheckItem CheckItem4,D.BadValue BadValue4,D.[Group] Group4
    FROM 
    (SELECT ROW_NUMBER() over(Order by sNo ASC) ID,* FROM Print_Temp WHERE [Group]=1) A
    LEFT OUTER JOIN 
    (SELECT ROW_NUMBER() over(Order by sNo ASC) ID,* FROM Print_Temp WHERE [Group]=2) B
    ON A.ID=B.ID AND A.TypeName=B.TypeName AND A.ItemType=B.ItemType AND A.isBad=B.isBad
    LEFT OUTER JOIN 
    (SELECT ROW_NUMBER() over(Order by sNo ASC) ID,* FROM Print_Temp WHERE [Group]=3) C
    ON B.ID=C.ID AND B.TypeName=C.TypeName AND B.ItemType=C.ItemType AND B.isBad=C.isBad
    LEFT OUTER JOIN 
    (SELECT ROW_NUMBER() over(Order by sNo ASC) ID,* FROM Print_Temp WHERE [Group]=4) D
    ON C.ID=D.ID AND C.TypeName=D.TypeName AND C.ItemType=D.ItemType AND C.isBad=D.isBad
)TAB

--每四个一组
序号    值        组属性
1        妲己    1
2        后羿    2
3        鲁班    3
4        狄仁杰    4
5        甄姬    1
6        安琪拉    2
7        亚瑟    3
8        小乔    4
9        周瑜    1
10        孙尚香    2

--先补足相同的数量    利用存储过程
序号    值        组属性
1        妲己    1
2        后羿    2
3        鲁班    3
4        狄仁杰    4
5        甄姬    1
6        安琪拉    2
7        亚瑟    3
8        小乔    4
9        周瑜    1
10        孙尚香    2
11        null    3        --能被4整除的
12        null    4        --能被4整除的

然后变成
--其中rn为rownumber()

rn        序号    值        组属性      序号       值      组属性    序号    值        组属性    序号    值        组属性
1    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值