簡體   English   中英

轉動mysql表不起作用

[英]pivoting mysql table doesnt work

我已經在這里閱讀了artfulsoftware和眾多主題,但仍然無法理解為什么我無法使其工作。

我有一個非常簡單的表(productProperties pp),有三列:

prodName propName propValue

我想查詢所以它將被表示為(例如)

prodName Color  Weight Adhesive
nail1    black  1lbs   3m 
nail2    silver 0.5lbs 3m

我嘗試了什么:

select 
    pp.prodName,
     CASE pp.propName
        WHEN 'Color' THEN pp.propValue
        ELSE NULL
    END as 'Color',

   CASE pp.propName
        WHEN 'Weight' THEN pp.propValue
        ELSE NULL
    END as 'Weight',

   CASE pp.propName
        WHEN 'Adhesive' THEN pp.propValue
        ELSE NULL
    END as 'Adhesive'      
from
    ProductsProperties as pp    
group by pp.prodName;

除了prodName,我得到所有的NULL

例如:

prodName propName   propValue
nail1    Color      black
nail1    Adhesive   3M
nail2    Weight     1lbs
nail3    Color      black
nail3    Adhesive   3M
nail5    Weight     1lbs

以上查詢結果如下:

 prodName, Color,   Weight, Adhesive
 nail1,    black,   NULL,   NULL
 nail2,    NULL,    1lbs,   NULL
 nail3,    black,   NULL,   NULL
 nail5,    NULL,    1lbs,   NULL

解決方案使用join

select distinct pp1.prodName, 
       pp2.propValue as 'Color', 
       pp3.propValue as 'Adhesive', 
       pp4.propValue as 'Weight' 
from ProductsProperties pp1 
  left join ProductsProperties pp2 on pp1.prodName = pp2.prodName and pp2.propName = 'Color'
  left join ProductsProperties pp3 on pp1.prodName = pp3.prodName and pp3.propName = 'Adhesive'
  left join ProductsProperties pp4 on pp1.prodName = pp4.prodName and pp4.propName = 'Weight';

您需要將CASE包裝到GROUP_CONCAT()

SELECT
    pp.prodName,
    GROUP_CONCAT(DISTINCT CASE pp.propName
        WHEN 'Color' THEN pp.propValue
        ELSE NULL
    END) AS'Color',

    GROUP_CONCAT(DISTINCT CASE pp.propName
        WHEN 'Weight' THEN pp.propValue
        ELSE NULL
    END) AS 'Weight',

    GROUP_CONCAT(DISTINCT CASE pp.propName
        WHEN 'Adhesive' THEN pp.propValue
        ELSE NULL
    END) AS 'Adhesive'      
FROM
    ProductsProperties AS pp    
GROUP BY pp.prodName;

暫無
暫無

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

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