sqlserver 行转列 举个例子
假设有一个名为"Orders"的表,包含以下列:
- OrderID (订单ID)
- CustomerID (顾客ID)
- ProductID (产品ID)
- Quantity (数量)
表中的数据如下:
OrderID | CustomerID | ProductID | Quantity --------|------------|-----------|--------- 1 | 1 | 100 | 5 1 | 1 | 200 | 3 1 | 2 | 100 | 2 2 | 1 | 200 | 4 2 | 2 | 100 | 1
现在要将该表的数据按照"OrderID"和"CustomerID"进行分组,并将"ProductID"和"Quantity"转换为列。可以使用以下SQL查询实现:
SELECT
OrderID,
CustomerID,
MAX(CASE WHEN ProductID = 100 THEN Quantity END) AS Product100Quantity,
MAX(CASE WHEN ProductID = 200 THEN Quantity END) AS Product200Quantity
FROM
Orders
GROUP BY
OrderID,
CustomerID
查询结果如下:
OrderID | CustomerID | Product100Quantity | Product200Quantity --------|------------|--------------------|------------------- 1 | 1 | 5 | 3 1 | 2 | 2 | NULL 2 | 1 | NULL | 4 2 | 2 | 1 | NULL
以上查询将"ProductID"为100和200的数量分别转换为"Product100Quantity"和"Product200Quantity"两列,并按照"OrderID"和"CustomerID"进行分组。如果某个订单的某个顾客没有购买某个产品,则对应的数量为NULL
原文地址: https://www.cveoy.top/t/topic/ic5l 著作权归作者所有。请勿转载和采集!