求行转列SQL语句

Tosp2012 2014-12-23 10:59:35
CREATE TABLE [dbo].[T_Tb](
[AutoID] [int] IDENTITY(1,1) NOT NULL,
[Shipping_Order] [char](30) Not NULL,
[Order_Number] [varchar](30) ,
[Do_No] [char](15) ,
[Item_Code] [char](20) Null,
[Pallet] [int] NULL,
[Tot_Ctn] [int] NULL,
[Delivery_Address] [varchar](500) Null
) ON [PRIMARY]

Insert [dbo].[T_Tb] (Shipping_Order, Order_Number, Do_No, Item_Code, Pallet, Tot_Ctn, Delivery_Address)
Select 'SC101','14885','TC1001','SC35003800',1,10,'上海' Union
Select 'SC105','10899','TK1008','SC35003805',1,13,'北京' Union
Select 'SC231','19786','TC1091','SC35003800',1,16,'湖北' Union
Select 'SC351','13875','TC1661','SC35003800',1,62,'上海' Union
Select 'SC510','19988','TC1781','SC35003800',1,40,'海南'

想要实现的结果如下:
Shipping_Order1 Order_Number1 Do_No1 Item_Code1 Pallet1 Tot_Ctn1 Delivery_Address1 Shipping_Order2 Order_Number2 Do_No2 Item_Code2 Pallet2 Tot_Ctn2 Delivery_Address2
SC101 14885 TC1001 SC35003800 1 10 上海 SC105 10899 TK1008 SC35003805 1 13 北京
SC231 19786 TC1091 SC35003800 1 16 湖北 SC351 13875 TC1661 SC35003800 1 62 上海
SC510 19988 TC1781 SC35003800 1 40 海南


即T_Tb表的AutoID与2的余数为1时,相应的列转换为对应列名+1;如果余数为0时,列名转换为相应的列名+2


...全文
100 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tosp2012 2014-12-23
  • 打赏
  • 举报
回复
引用 3 楼 ky_min 的回复:
SELECT T1.Shipping_Order Shipping_Order1,T1.Order_Number Order_Number1,T1.Do_No Do_No1,T1.Item_Code Item_Code1
	,T1.Pallet Pallet1,T1.Tot_Ctn Tot_Ctn1,T1.Delivery_Address Delivery_Address1
	,T2.Shipping_Order Shipping_Order2,T2.Order_Number Order_Number2,T2.Do_No Do_No2,T2.Item_Code Item_Code2
	,T2.Pallet Pallet2,T2.Tot_Ctn Tot_Ctn2,T2.Delivery_Address Delivery_Address2
FROM [T_Tb] T1
	LEFT JOIN [T_Tb] T2 ON T1.AutoID=T2.AutoID-1
WHERE T1.AutoID%2=1
是这样吗
多谢ky_min 这个就是我想要的结果。
还在加载中灬 2014-12-23
  • 打赏
  • 举报
回复
SELECT T1.Shipping_Order Shipping_Order1,T1.Order_Number Order_Number1,T1.Do_No Do_No1,T1.Item_Code Item_Code1
	,T1.Pallet Pallet1,T1.Tot_Ctn Tot_Ctn1,T1.Delivery_Address Delivery_Address1
	,T2.Shipping_Order Shipping_Order2,T2.Order_Number Order_Number2,T2.Do_No Do_No2,T2.Item_Code Item_Code2
	,T2.Pallet Pallet2,T2.Tot_Ctn Tot_Ctn2,T2.Delivery_Address Delivery_Address2
FROM [T_Tb] T1
	LEFT JOIN [T_Tb] T2 ON T1.AutoID=T2.AutoID-1
WHERE T1.AutoID%2=1
是这样吗
Tosp2012 2014-12-23
  • 打赏
  • 举报
回复
不知表达清楚了没, 求教。谢!
Tosp2012 2014-12-23
  • 打赏
  • 举报
回复
即,AutoID除2余数为1及0的行,并为一行,列名用原来的列名加1与2作为区别。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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