簡體   English   中英

將多行轉換為表中的列

[英]converting multiple rows to columns in a table

我有一個包含以下行的表:

╔══════════╦═══════════╦════════╗
║ PK_VALUE ║ RATING_ID ║ RATING ║
╠══════════╬═══════════╬════════╣
║       11 ║         1 ║     90 ║
║       11 ║         2 ║     80 ║
║       11 ║         3 ║     90 ║
║       12 ║         1 ║     90 ║
║       12 ║         2 ║     80 ║
║       12 ║         3 ║     90 ║
╚══════════╩═══════════╩════════╝

我想將上表作為:

╔══════════╦════════════╦════════════╦════════════╗
║ PK_VALUE ║ RATING_ID1 ║ RATING_ID2 ║ RATING_ID3 ║
╠══════════╬════════════╬════════════╬════════════╣
║       11 ║         90 ║         80 ║         90 ║
║       12 ║         90 ║         80 ║         90 ║
╚══════════╩════════════╩════════════╩════════════╝

我嘗試了一些我在Google搜索中找到的建議,但它顯示我們必須插入表格中。 我不確定這一點。 歡迎任何建議......

I have uploaded the screenshots related to my doubt.. 在我用來獲取之前的結果查詢的圖像..

In this image we can see two review ID's for the same pk_value.. But I am receiving only one review ID after including your query.. 包含您的查詢后的結果..

在上面How can I get result of both the review ID's???

使用CASEMAX

SELECT  pk_value,
        MAX(CASE WHEN rating_ID = 1 THEN rating ELSE NULL END) AS r1,
        MAX(CASE WHEN rating_ID = 2 THEN rating ELSE NULL END) AS r2,
        MAX(CASE WHEN rating_ID = 3 THEN rating ELSE NULL END) AS r3
FROM    tableName
GROUP   BY pk_value

否則,如果您具有未知數量的Rating_ID並且您不希望不斷更新查詢,則建議使用Dynamic SQL

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(CASE WHEN rating_ID = ',
      rating_id,
      ' then rating ELSE NULL end) AS `rating_id', rating_id, '`')
  ) INTO @sql
FROM TableName;

SET @sql = CONCAT('SELECT  pk_value, ', @sql, ' 
                   FROM    tableName
                   GROUP   BY pk_value');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

以上查詢都有相同的結果,

╔══════════╦════════════╦════════════╦════════════╗
║ PK_VALUE ║ RATING_ID1 ║ RATING_ID2 ║ RATING_ID3 ║
╠══════════╬════════════╬════════════╬════════════╣
║       11 ║         90 ║         80 ║         90 ║
║       12 ║         90 ║         80 ║         90 ║
╚══════════╩════════════╩════════════╩════════════╝

暫無
暫無

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

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