我試圖編寫sql代碼來創建一個表,這是一個給定表的轉置。最初我有一個數據表。我正在嘗試創建一個使用sql server management studio的輸入表的轉置表。在sql server中的錶轉置?
plz幫助我....
輸入如下:
輸出:
我試圖編寫sql代碼來創建一個表,這是一個給定表的轉置。最初我有一個數據表。我正在嘗試創建一個使用sql server management studio的輸入表的轉置表。在sql server中的錶轉置?
plz幫助我....
輸入如下:
輸出:
像這樣的事情可能會做的伎倆:
測試數據
CREATE TABLE #tbl
(
Y1 INT,
Y2 INT,
Y3 INT,
Y4 INT,
Y5 INT
)
INSERT INTO #tbl
VALUES
(1,2,3,4,9),
(1,6,9,3,6),
(2,2,6,7,6)
然後,我們需要知道X多少列在那裏。這得到的列:
DECLARE @nbrOf INT=(SELECT COUNT(*) FROM #tbl)
DECLARE @cols VARCHAR(MAX)
DECLARE @colsWithName VARCHAR(MAX)
;WITH Nbrs (n) AS (
SELECT 1 UNION ALL
SELECT 1 + n FROM Nbrs WHERE n <@nbrOf)
SELECT
@cols = COALESCE(@cols + ','+QUOTENAME(n),
QUOTENAME(n)),
@colsWithName = COALESCE(@colsWithName + ','+QUOTENAME(n)+' AS X'+CAST(n AS VARCHAR(10)),
QUOTENAME(n)+' AS X'+CAST(n AS VARCHAR(10)))
FROM
Nbrs
然後,我們要做一些動態的數據透視表。就像這樣:
DECLARE @query NVARCHAR(4000)=
N'SELECT
'[email protected]+'
FROM
(
SELECT
ROW_NUMBER() OVER(ORDER BY tbl.Y1) AS RowNbr,
tbl.Y1,
tbl.Y2,
tbl.Y3,
tbl.Y4,
tbl.Y5
FROM
#tbl AS tbl
) AS p
UNPIVOT
(
Value FOR Name IN
(Y1, Y2, Y3, Y4, Y5)
) AS unpvt
PIVOT
(
MAX(Value)
FOR RowNbr IN('[email protected]+')
) AS pvt'
EXECUTE(@query)
然後在我的情況下,我會下降臨時表
DROP TABLE #tbl
感謝您的快速答覆.....我不需要任何列名和所有的一切......我需要的只是轉置給定表的數據.....如果這是什麼樞軸會做什麼,你可以嘗試解釋我的示例表.....我是新手到sql – krrish 2012-03-15 01:07:12
通過轉置,做你的意思是你想旋轉你的桌子? – AFD 2012-03-15 01:09:48
我只想旋轉表格數據...如圖所示,原始表格中的第一行是表格第一列的數據 – krrish 2012-03-15 01:11:25