SQL查询,比较两列,如果一列大于另一列,则输出1

SQL查询,比较两列,如果一列大于另一列,则输出1,sql,Sql,我有一个名为product_pairs的表,它有以下内容 product_pair, product_views_1, product_views_2 我想写一个查询,它将有效地输出一个包含以下列的新表 product_pair, comparison_indicator 其中,如果产品视图>产品视图,则比较指标=1,否则为比较指标=0 我目前正在使用一个简单的查询,类似 SELECT product_pair, CASE WHEN product_views_1 > product_

我有一个名为product_pairs的表,它有以下内容

product_pair, product_views_1, product_views_2
我想写一个查询,它将有效地输出一个包含以下列的新表

product_pair, comparison_indicator
其中,如果产品视图>产品视图,则比较指标=1,否则为比较指标=0

我目前正在使用一个简单的查询,类似

SELECT product_pair, CASE WHEN product_views_1 > product_views_2 THEN 1 ELSE 0 END as comparison_indicator  

FROM product_pairs
然而,这似乎会导致错误

有人知道发生了什么吗?

这应该行得通

SELECT 'product_pair' = CASE WHEN product_views_1 > product_views_2 
THEN 1 ELSE 0 END as comparison_indicator  

FROM product_pairs

假设查询在您的SQL引擎中运行,我能从这样一个简单的查询中想到的唯一可能的问题是
product\u views\u 2
NULL
,您希望表达式返回
1
,而不是
0

SELECT product_pair,
       (CASE WHEN coalesce(product_views_1, 0) > coalesce(product_views_2, 0) THEN 1
             ELSE 0
        END) as comparison_indicator
FROM product_pairs;

涉及
NULL
的比较总是错误的,当然
是NULL
除外。

您有什么错误?您没有指定RDBMS。可能您正在使用的别名不支持大小写结构。如果要引用别名,必须使用双引号,而不是单引号。另外,Berk U想要选择product_pair字段,而您的答案没有这样做。