SQLの列を行に変換する方法は何種類ありますか?
SQLで列を行に変換する方法には、以下のいくつかの方法があります。
- UNPIVOT操作を使用すると、列を行に変換できます。変換する列と生成される行の列名を指定する必要があります。例えば、
SELECT customer_id, product, quantity
FROM sales
UNPIVOT
(
quantity
FOR product IN (product_A, product_B, product_C)
) AS unpvt;
- CROSS APPLYを使用する:CROSS APPLY演算子は、列を行に変換することができます。これはVALUES句と一緒に使用され、列の値を行に変換することができます。例えば:
SELECT s.customer_id, v.product, v.quantity
FROM sales s
CROSS APPLY
(
VALUES
('product_A', s.product_A),
('product_B', s.product_B),
('product_C', s.product_C)
) AS v (product, quantity);
- UNION ALLを使用すると、複数のクエリ結果セットを一つの結果セットに結合することができます。UNION ALLを使用する際は、各クエリが同じ列数と同じデータ型を返す必要があります。例:
SELECT customer_id, 'product_A' AS product, product_A AS quantity
FROM sales
UNION ALL
SELECT customer_id, 'product_B' AS product, product_B AS quantity
FROM sales
UNION ALL
SELECT customer_id, 'product_C' AS product, product_C AS quantity
FROM sales;
これらは、列を行に変換する一般的な方法であり、具体的にどの方法を使用するかはデータベースのサポートとクエリの要件によって異なります。