假设有一个名为"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

sqlserver 行转列 举个例子

原文地址: https://www.cveoy.top/t/topic/ic5l 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录