我有一个像这样的sql语句:
SELECT a.link_id, a.Speed_Limit_1, a.Speed_Limit_2, a.speed_limit_source, g.autos, g.trucks, g.motorcycles, 'vehicleType' as vehicleType
FROM g, f, d, a
WHERE f.access_id = g.access_id
AND d.condition_id = f.condition_id
AND g.access_id = a.access_id
结果:
link_id ......汽车... ...卡车摩托车.........的 vehicleTypes
1 .......... | .......ÿ.... | ....ÿ...... | .....Ñ.... ............. |?.............
2 .......... | .......ÿ.... | ....ÿ...... | .....ÿ.... ............. |?.............
3 .......... | .......ÿ.... | ....ÿ...... | .....Ñ.... ............. |?.............
4 .......... | .......ÿ.... | ....Ñ...... | .....ÿ.... ............. |?.............
我将添加列“vehicleTypes。此列中的内容应为:
0如果允许汽车,卡车和摩托车(例如第2排)
如果只允许车辆,则1
2如果只允许卡车
3如果只允许摩托车
我该怎么做?
答案 0 :(得分:1)
这应该这样做。 我添加了一个ELSE -1来指示它与任何标准不匹配的位置。
SELECT
a.link_id,
a.Speed_Limit_1,
a.Speed_Limit_2,
a.speed_limit_source,
g.autos, g.trucks,
g.motorcycles,
CASE
WHEN g.autos = 'Y' AND g.trucks = 'Y' AND g.motorcycles = 'Y' THEN 0
WHEN g.autos = 'Y' AND g.trucks = 'N' AND g.motorcycles = 'N' THEN 1
WHEN g.autos = 'N' AND g.trucks = 'Y' AND g.motorcycles = 'N' THEN 2
WHEN g.autos = 'N' AND g.trucks = 'N' AND g.motorcycles = 'Y' THEN 3
ELSE -1
END as vehicleTypes
FROM g, f, d, a
WHERE f.access_id = g.access_id
AND d.condition_id = f.condition_id
AND g.access_id = a.access_id
答案 1 :(得分:0)
您应该使用CASE WHEN
阻止
例如在Oracle中: https://www.techonthenet.com/oracle/functions/case.php