where和case一起使用

ybzsozfc  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(297)

我是个初学者,很难使用 CASE 声明。这里我想用一个 CASE 如果条件(例如。 segment = '87' 或者 '30' )已满足。我试过以下方法,但没有用。
我可能在什么地方漏了逗号之类的东西吗?

  1. WITH status AS
  2. (
  3. SELECT id,
  4. first_day AS 'month'
  5. WHERE segment = '87' CASE
  6. WHEN subscription_start < first_day THEN 1
  7. ELSE 0
  8. END AS is_active_87
  9. WHERE segment = '30' CASE
  10. WHEN subscription_start < first_day THEN 1
  11. ELSE 0
  12. END AS is_active_30
  13. );

提前谢谢!

0sgqnhkj

0sgqnhkj1#

您拥有的不是有效的sql;你需要把你的情况包括在 WHERE 进入 CASE 表情。请注意,您还缺少一个 FROM 查询中的子句:

  1. WITH status AS
  2. (
  3. SELECT id,
  4. first_day AS 'month',
  5. CASE WHEN segment = '87' AND subscription_start < first_day THEN 1
  6. ELSE 0
  7. END AS is_active_87,
  8. CASE WHEN segment = '30' AND subscription_start < first_day THEN 1
  9. ELSE 0
  10. END AS is_active_30
  11. FROM yourtable
  12. )
kmpatx3s

kmpatx3s2#

在sqlite中,布尔表达式的计算方式为 0 为了 FALSE 或者 1 为了 TRUE ,因此不需要 CASE 表达式:

  1. WITH status AS
  2. (
  3. SELECT id,
  4. first_day AS month,
  5. (segment = '87' AND subscription_start < first_day) AS is_active_87,
  6. (segment = '30' AND subscription_start < first_day) AS is_active_30
  7. FROM tablename
  8. )

相关问题