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

时间:2013-06-17 22:25:02

标签: sql

我有一个名为product_pairs的表,其中包含以下内容

product_pair, product_views_1, product_views_2

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

product_pair, comparison_indicator

如果product_views_1>,compare_indicator = 1否则,product_views_2和comparison_indicator = 0。

我目前正在使用类似

的简单查询
SELECT product_pair, CASE WHEN product_views_1 > product_views_2 THEN 1 ELSE 0 END as comparison_indicator  

FROM product_pairs

然而,这似乎会导致错误。

有谁知道发生了什么事?

2 个答案:

答案 0 :(得分:1)

假设查询在您的SQL引擎中运行,我可以从这样一个简单的查询中想到唯一可能的问题是product_views_2NULL并且您希望表达式返回{{1而不是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除外。

答案 1 :(得分:-3)

这应该有效

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

FROM product_pairs