【问题标题】:Using distinct in case condition sql在case条件sql中使用distinct
【发布时间】:2016-09-26 05:35:05
【问题描述】:

有没有办法在sql的case语句中使用distinct?

例如——

CASE WHEN col1 = 'XYZ' and DISTINCT(col1,col2)
THEN 'Do_This'
ELSE 'Do_That'
END

不幸的是,在上面的 case 语句中使用 DISTINCT 会引发错误。

我正在使用 postgres/redshift sql。

【问题讨论】:

  • 您对该查询的目标是什么?
  • 那个查询没有任何意义
  • CASE 是一个表达式,它只返回一个标量值。它不能像过程语言那样用于控制流。此外,DISTINCT 不能用作谓词。在 SELECT 语句中使用时,DISTINCT 会过滤掉重复的行。
  • 显示正确的数据样本和预期的结果..
  • 如果您遇到错误,请提供错误信息。看看stackoverflow.com/help/how-to-ask

标签: sql postgresql amazon-redshift


【解决方案1】:

首先,您的目标尚不清楚,但根据您的查询,我的假设是您想要 DO_This 或 Do_That,具体取决于 col1 值作为 'XYZ' 并按 col 1、col2 分组。

SELECT 
CASE WHEN COL1 = 'XYZ'
THEN 'DO_THIS'
ELSE 'DO_THAT'
END
FROM 
(
SELECT 
COL1, COL2
FROM YOUR_TABLE
GROUP BY COL1, COL2
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    相关资源
    最近更新 更多