SQL - 来自同一视图中不同列的工作数据

  • 本文关键字:数据 工作 视图 SQL sql
  • 更新时间 :
  • 英文 :


我在SQL中有这个视图:

Table Name: cars
+----------+
| Car_Type |
+----------+
| volvo    |
| tesla    |
| audi     |
+----------+

我使用左连接获得汽车类型。
现在我想使用 SQL CASE 语句isElectric列,以了解汽车是否是电动

添加新列时,我的代码在视图中进行了硬编码:

CASE 
  WHEN cars.Car_Type = 'volvo' THEN cars.isElectric=0
  WHEN cars.Car_Type = 'tesla' THEN cars.isElectric=1
  WHEN cars.Car_Type = 'audi' THEN cars.horsepower=0
END

我想要以下输出:

+----------+-----------+
| Car_Type | isElectric|
+----------+-----------+
| volvo    | 0         |
| tesla    | 1         |
| audi     | 0         |
+----------+-----------+

不幸的是,这不起作用,有谁知道如何解决这个问题?
谢谢

我假设您希望选择提供的值作为马力。如果这些值包含在汽车表中,则不需要 CASE - WHEN,只需从汽车表中选择马力列即可。

CASE 
  WHEN cars.Car_Type = 'volvo' THEN 150
  WHEN cars.Car_Type = 'tesla' THEN 300
  WHEN cars.Car_Type = 'audi' THEN 187
END AS Horsepower

正在更新您的更新:

CASE 
  WHEN cars.Car_Type = 'volvo' THEN 0
  WHEN cars.Car_Type = 'tesla' THEN 1
  WHEN cars.Car_Type = 'audi' THEN 0
END AS IsElectric

您也可以使用 CASE - WHEN - ELSE 执行此操作,因为您只选择 0 或 1

你想表达这一点吗?

(CASE WHEN cars.Car_Type = 'volvo' THEN 0
      WHEN cars.Car_Type = 'tesla' THEN 1
      WHEN cars.Car_Type = 'audi' AND crs.horsepower = 0 THEN 1
      WHEN cars.Car_Type = 'audi' THEN 0
 END) as isElectric

最新更新