このような何か:
まずいくつかのテストデータ:
CREATE TABLE tblTempValues
(
EMPID VARCHAR(100),
ENAME VARCHAR(100),
SALARY INT,
DEPARTMENT VARCHAR(100)
)
INSERT INTO tblTempValues
VALUES
('01','TEST1',2000,'A/C'),
('02','TEST2',3000,'SALES')
にPIVOT
に列を取得します。このようなダイナミックなピボットを行うその後
DECLARE @cols VARCHAR(MAX)
;WITH CTE
AS
(
SELECT
ROW_NUMBER() OVER(ORDER BY tblTempValues.EMPID) AS RowNbr
FROM
tblTempValues
)
SELECT
@cols=COALESCE(@cols +','+QUOTENAME(RowNbr),QUOTENAME(RowNbr))
FROM
CTE
:私はEMPID
上ROW_NUMBER
を使用しています。 orderWeight
あなたが列の順序を持つことになりますように:
DECLARE @query NVARCHAR(4000)=
N';WITH CTE
AS
(
SELECT ''EMPID'' AS ID, CAST(EMPID AS VARCHAR(MAX)) AS Value, ROW_NUMBER() OVER(ORDER BY EMPID) AS RowId,1 as orderWeight FROM tblTempValues UNION ALL
SELECT ''ENAME'' AS ID, CAST(ENAME AS VARCHAR(MAX)) AS Value, ROW_NUMBER() OVER(ORDER BY EMPID) AS RowId,2 as orderWeight FROM tblTempValues UNION ALL
SELECT ''SALARY'' AS ID, CAST(SALARY AS VARCHAR(MAX)) AS Value, ROW_NUMBER() OVER(ORDER BY EMPID) AS RowId,3 as orderWeight FROM tblTempValues UNION ALL
SELECT ''DEPARTMENT'' AS ID, CAST(DEPARTMENT AS VARCHAR(MAX)) AS Value, ROW_NUMBER() OVER(ORDER BY EMPID) AS RowId,4 as orderWeight FROM tblTempValues
)
SELECT
ID,'[email protected]+'
FROM
CTE
PIVOT
(
MAX(Value)
FOR RowId IN('[email protected]+')
) AS p'
EXECUTE(@query)
その後、私の場合、私はあなたが?そのテーブルの上に得ることを期待するにはどうすればよい多くの行一時テーブル
DROP TABLE tblTempValues
をドロップしますあなたは200の雇用を持っているときに201の列が必要になることを認識しています、なぜそれが必要でしょうか? – Lamak
これらの結果はどこに表示されますか? – kaj