【发布时间】:2020-09-30 14:46:09
【问题描述】:
我有这些栏目:
- 身份证
- 姓名
- 地址
- 一个
- b
- c
- d
- e
- f
我需要将列从 a 转为 f 才能拥有:
身份证 姓名 地址 回复
CREATE PROCEDURE [dbo].[sProcedure]
AS
BEGIN
DECLARE @UnpivotList NVARCHAR(MAX) = N'';
SELECT @UnpivotList = CONCAT(@UnpivotList, ',(''fe.[', c.name, '])')
FROM
sys.columns c
WHERE
c.object_id = OBJECT_ID('_myTable')
AND c.column_id >3;
DECLARE @sql NVARCHAR(MAX) = CONCAT(N'
SELECT
fe.ID,
fe.Name,
fe.Address,
ul.res
INTO
newTable
FROM
myTable fe
CROSS APPLY ( VALUES ', STUFF(@UnpivotList, 1, 1, ''), N') ul (res)'
);
EXEC sys.sp_executesql @sql;
END
但它不起作用,有人可以帮帮我吗?
【问题讨论】:
标签: sql-server tsql unpivot