我有這樣一個如何將列轉換爲行?
RowNum | TranNo | nTotalSales | nBalance
1 | 1 | 800 | 0
一個表,我想以顯示它這樣
RowNum | 1
cTranNo | 1
nTotalSales | 800
nBalance | 0
我怎樣才能做到這一點?
我有這樣一個如何將列轉換爲行?
RowNum | TranNo | nTotalSales | nBalance
1 | 1 | 800 | 0
一個表,我想以顯示它這樣
RowNum | 1
cTranNo | 1
nTotalSales | 800
nBalance | 0
我怎樣才能做到這一點?
下面是一個完整的工作例如,當你這樣做的UNPIVOT
,這是你在問什麼,你的「價值」的類型必須是相同的類型,所以不管你想要什麼都可以。在我的例子中,我將它們全部轉換爲VARCHAR(20):
DECLARE @bob TABLE
(
RowNum INT,
TranNo INT,
nTotalSales INT,
nBalance INT
);
INSERT INTO @bob(RowNum, TranNo, nTotalSales, nBalance)
VALUES(1, 1, 800, 0);
WITH T AS (
SELECT CAST(RowNum AS VARCHAR(20)) AS RowNum,
CAST(TranNo AS VARCHAR(20)) AS TranNo,
CAST(nTotalSales AS VARCHAR(20)) AS nTotalSales,
CAST(nBalance AS VARCHAR(20)) AS nBalance
FROM @bob
)
SELECT attribute, value
FROM T
UNPIVOT(value FOR attribute IN(RowNum, TranNo, nTotalSales, nBalance)) AS U;
有趣的答案,但我有一個錯誤,當我修改'與'區域:「與T AS(從tran_ar_si選擇RowNum,cTranNo,nTotalSales,nBalance)」 – illumi 2012-02-10 02:45:54
「列的類型」cTranNo「與類型在UNPIVOT列表中指定的其他列。「 - 那是錯誤信息。 – illumi 2012-02-10 02:48:31
@dave, - 我的朋友,'UNPIVOT'就是你要求的。你不需要使用我的'WITH T AS(...'語句,這只是一個工作的例子,如果你自己運行我的整個例子,那麼它就可以正常工作,如果你想用你的表格考慮'用T AS(...'作爲你的源表 - 讓我知道如果你需要進一步澄清 – 2012-02-10 03:06:50
SELECT 'RowNum' TITLE, RowNum AS [VALUE]
FROM TABLE
UNION ALL
SELECT 'TranNo', TranNo
FROM TABLE
UNION ALL
SELECT 'nTotalSales', nTotalSales
FROM TABLE
UNION ALL
SELECT 'nBalance', nBalance
FROM TABLE
這不是真正的樂趣,但這裏有一個解決辦法:
SELECT 'RowNum', RowNum FROM tbl
UNION
SELECT 'cTranNo', TranNo FROM tbl
UNION
SELECT 'nTotalSales', nTotalSales FROM tbl
UNION
SELECT 'nBalance', nBalance FROM tbl
這將開啓列成行。如果您希望每個列行都是交錯的,則可能需要引入一個記錄編號以及一些排序。
這將是這樣的:
SELECT 'RowNum' AS ColName, RowNum AS [Value], RowNum FROM tbl
UNION
SELECT 'cTranNo' AS ColName, TranNo, RowNum FROM tbl
UNION
SELECT 'nTotalSales' AS ColName, nTotalSales, RowNum FROM tbl
UNION
SELECT 'nBalance' AS ColName, nBalance, RowNum FROM tbl
ORDER BY RowNum, ColName
感謝您的答案,但我怎麼能使這種動態? – illumi 2012-02-10 02:34:47
您將此標記爲「pivot」,這是正確的。爲什麼不看這些問題? – 2012-02-10 02:30:06
所有你需要做的是搜索「數據透視示例」https://www.google.com/search?q=pivot+examples – JSuar 2012-02-10 02:32:03
,因爲我很困惑這些問題中給出的例子。所以我希望創造我自己的。請幫幫我。 – illumi 2012-02-10 02:32:10