【发布时间】:2020-01-08 16:28:55
【问题描述】:
如果他们拥有汽车或卡车,我必须编写一个查询以获取带有标志的个人 ID 的最终输出。
预期输出:
Person_ID | Truck | Car
1 Y Y
我编写的查询从具有多个 ID 的表中提取数据,因此输出的 ID 重复。
基础数据:
SELECT DISTINCT PERSON_ID, VEHICLE_TYPE
FROM CARS
输出:
PERSON_ID | VEHICLE_TYPE
1 Car
1 Truck
我的查询:
SELECT PERSON_ID,
CASE WHEN VEHICLE_TYPE = 'TRUCK' THEN 'Y' ELSE 'N' END AS TRUCK,
CASE WHEN VEHICLE_TYPE = 'CAR' THEN 'Y' ELSE 'N' END AS CAR
FROM (
SELECT DISTINCT PERSON_ID, VEHICLE_TYPE
FROM CARS
)
最终输出:
Person_ID | Truck | Car
1 Y N
1 N Y
此人同时拥有卡车和汽车,但 ID 被重复。有没有办法解决这个问题?
【问题讨论】:
-
您正在尝试将多行转换为多列的单行称为透视数据。不幸的是,Db2 没有内置函数来执行此操作。 @GMB 的回答向您展示了手动操作的方法...
标签: sql database db2 case-when