私はMySQLのテーブルを持っている:私は以下のような出力に何か(ピボットの一種)したいMySQLでピボットを行うには?
、ペン、鉛筆や接着剤の列の値は、最近のタイムスタンプから移入する必要があります。 Product
グループ -
私はMySQLのテーブルを持っている:私は以下のような出力に何か(ピボットの一種)したいMySQLでピボットを行うには?
、ペン、鉛筆や接着剤の列の値は、最近のタイムスタンプから移入する必要があります。 Product
グループ -
あなたは、各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
実行しているのデモについては、以下のリンクをクリックしてください:
素晴らしい答え!!! – Blank
ありがとうございましたティムそんなに...それは私のために働いた.uは私の一日を保存しました – user2462471
はこれを試してみてください:
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
これは私のために働いても、高速返信のありがとうありがとう。 – user2462471
は、あなたが、私はこのクエリを試してみました –
を試してみましたが、どのような私たちを見る: 選択 カテゴリ、 max(if( 'product' 'ペン'、 最大(if( 'product' = 'pen'、flag、null))は 'ペン'として、 、flag、null))を 'Glue'として Product_Table これは私に出力を与えていますが、最新のタイムスタンプのフラグ値を取得する方法がわかりません – user2462471