SQL CASE THEN语句,其中ID有多个值
如果一个人拥有一辆汽车或卡车,我必须编写一个查询以获得带有标志的一个人ID的最终输出 预期产出:SQL CASE THEN语句,其中ID有多个值,sql,database,db2,case-when,Sql,Database,Db2,Case When,如果一个人拥有一辆汽车或卡车,我必须编写一个查询以获得带有标志的一个人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
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
此人有一辆卡车和一辆汽车,但身份证正在重复。有没有办法解决这个问题 您可以执行条件聚合:
select
person_id,
max(case when vehicle_type = 'TRUCK' then 'Y' else 'N' end) truck,
max(case when vehicle_type = 'CAR' then 'Y' else 'N' end) car
from cars
group by person_id
您可以执行条件聚合:
select
person_id,
max(case when vehicle_type = 'TRUCK' then 'Y' else 'N' end) truck,
max(case when vehicle_type = 'CAR' then 'Y' else 'N' end) car
from cars
group by person_id
您尝试将多行转换为具有多列的单行的操作称为数据透视。不幸的是,Db2没有内置函数来实现这一点@GMB的答案向您展示了手动操作的方法…您试图做的是,将多行转换为具有多列的单行,称为数据透视。不幸的是,Db2没有内置函数来实现这一点@GMB的答案告诉你手动操作的方法。。。