2016-07-22 5 views
0

私はMySQLのテーブルを持っている:私は以下のような出力に何か(ピボットの一種)したいMySQLでピボットを行うには?

enter image description here

、ペン、鉛筆や接着剤の列の値は、最近のタイムスタンプから移入する必要があります。 Productグループ -

enter image description here

+1

は、あなたが、私はこのクエリを試してみました –

+0

を試してみましたが、どのような私たちを見る: 選択 カテゴリ、 max(if( 'product' 'ペン'、 最大(if( 'product' = 'pen'、flag、null))は 'ペン'として、 、flag、null))を 'Glue'として Product_Table これは私に出力を与えていますが、最新のタイムスタンプのフラグ値を取得する方法がわかりません – user2462471

答えて

2

あなたは、各Categoryの最新のレコードを特定するサブクエリの旋回を行うことによって、あなたの結果を達成することができます。

SELECT t1.Category, 
     MAX(CASE WHEN t1.Product = 'pen' THEN CONCAT(t1.Flag, '(productid-', t1.Product_ID, ')') ELSE NULL END) AS Pen, 
     MAX(CASE WHEN t1.Product = 'pencil' THEN CONCAT(t1.Flag, '(productid-', t1.Product_ID, ')') ELSE NULL END) AS Pencil, 
     MAX(CASE WHEN t1.Product = 'glue' THEN CONCAT(t1.Flag, '(productid-', t1.Product_ID, ')') ELSE NULL END) AS Glue 
FROM yourTable t1 
INNER JOIN 
(
    SELECT Category, Product, MAX(timestamp) AS timestamp 
    FROM yourTable 
    GROUP BY Category, Product 
) t2 
    ON t1.Category = t2.Category AND 
     t1.Product = t2.Product AND 
     t1.timestamp = t2.timestamp 
GROUP BY t1.Category 

実行しているのデモについては、以下のリンクをクリックしてください:

SQLFiddle

+1

素晴らしい答え!!! – Blank

+0

ありがとうございましたティムそんなに...それは私のために働いた.uは私の一日を保存しました – user2462471

0

はこれを試してみてください:

select 
    Category, 
    max(case when Product = 'pen' then concat(`Flag`, '(productid-', Product_ID, ')') else null end) as `Pen`, 
    max(case when Product = 'pencil' then concat(`Flag`, '(productid-', Product_ID, ')') else null end) as `Pencil`, 
    max(case when Product = 'glue' then concat(`Flag`, '(productid-', Product_ID, ')') else null end) as `Glue` 
from (
    select t1.* 
    from yourtable t1 
    join (
     select Product, Category, max(`timestamp`) as `timestamp` 
     from yourtable 
     group by Product, Category 
    ) t2 on t1.Product = t2.Product and t1.`timestamp` = t2.`timestamp` and t1.Category = t2.Category 
) t 
group by Category 
+0

これは私のために働いても、高速返信のありがとうありがとう。 – user2462471

関連する問題