簡體   English   中英

如何使用 SQL 數據透視表將我的數據行轉換為列

[英]How can I use SQL Pivot Table to turn my rows of data into columns

SQL 2008中,我需要展平表並將額外的行顯示為列。 我所能找到的只是帶有計算的查詢。 我只想顯示原始數據。 數據如下(簡化):

ID#     Name       Name_Type
1       Mary Jane  Legal
1       MJ         Nickname
1       Smith      Maiden
2       John       Legal
3       Suzanne    Legal
3       Susie      Nickname

我希望數據顯示為:

ID#     Legal      Nickname      Maiden
1       Mary Jane  MJ            Smith
2       John
3       Suzanne    Susie

如果該列不存在任何行,則該列中不顯示任何內容。 我認為Pivot Table方法應該有效。

PIVOT要求您使用聚合。 請參閱這篇文章以更好地解釋它是如何工作的。

CREATE TABLE #MyTable
(
    ID# INT
    , Name VARCHAR(50)
    , Name_Type VARCHAR(50)
);

INSERT INTO #MyTable VALUES
(1, 'Mary Jane', 'Legal')
, (1, 'MJ', 'Nickname')
, (1, 'Smith', 'Maiden')
, (2, 'John', 'Legal')
, (3, 'Suzanne', 'Legal')
, (3, 'Susie', 'Nickname');

SELECT * 
FROM
    (
        SELECT * FROM #MyTable
    ) AS Names
    PIVOT (MAX(NAME)
    FOR Name_Type IN ([Legal], [Nickname], [Maiden]))
    AS PVT;

DROP TABLE #MyTable;

試試這個(將“new_Table”替換為您的表 - 名稱,將“ID_”替換為您的 id - 列):

SELECT ID_ AS rootID, (
SELECT Name
    FROM new_table
        WHERE Name_type = 'legal'
            AND new_table.ID_ = rootID
) AS legal,
(
SELECT Name
    FROM new_table
        WHERE Name_type = 'Nickname'
            AND ID_ = rootID
) AS Nickname,
(
SELECT Name
    FROM new_table
        WHERE Name_type = 'Maiden'
            AND ID_ = rootID
) AS Maiden
FROM new_table
    GROUP BY rootID;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM