SQL ID 有多个值的 CASE THEN 语句
SQL CASE THEN statement where ID has multiple values
如果他们拥有汽车或卡车,我必须编写一个查询来获取带有标志的个人 ID 的最终输出。
预期输出:
Person_ID | Truck | Car
1 Y Y
我编写的查询从具有多个 ID 的 table 中提取数据,因此输出具有重复的 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重复。有什么办法可以解决这个问题吗?
您可以进行条件聚合:
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
如果他们拥有汽车或卡车,我必须编写一个查询来获取带有标志的个人 ID 的最终输出。
预期输出:
Person_ID | Truck | Car
1 Y Y
我编写的查询从具有多个 ID 的 table 中提取数据,因此输出具有重复的 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重复。有什么办法可以解决这个问题吗?
您可以进行条件聚合:
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