3

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

product_pair, product_views_1, product_views_2

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

product_pair, comparison_indicator

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

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

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

FROM product_pairs

但是,这似乎会导致错误。

有谁知道发生了什么?

4

2 回答 2

1

假设查询在您的 SQL 引擎中运行,我可以从这样一个简单的查询中想到的唯一可能的问题product_views_2NULL,您希望表达式返回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的比较总是错误的——is NULL当然,除了 之外。

于 2013-06-18T00:02:33.403 回答
-3

这应该工作

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

FROM product_pairs
于 2013-06-17T22:31:03.810 回答