我试图展示我们公司提供的产品已经在某个时间点购买。我想显示每个产品的名称,然后在每个产品旁边显示一个简单的Y或N,表明它是否在特定日期之前出售。我不确定如何构建查询 - 这是我的尝试
SELECT product_offering as Product
CASE WHEN date_key='2017-03-30' THEN product_sold ELSE product_sold END as Sold
FROM table1
如果作为缩短的例子,它应该看起来像
第一个产品出售2017-03-27
第二个产品已售出2017-04-03
第3个产品2017-3-28销售
|Product | Sold |
|1st Prod| Y |
|2nd Prod| N |
|3rd Prod| Y |
相反,"已售出#34;专栏并不完全准确。我认为这与日期等于特定日期而不是导致的范围有关,但我不确定如何解决这个问题。
答案 0 :(得分:0)
如果我理解正确,你需要这样的东西:
SELECT product_offering as Product,
(CASE WHEN MIN(date_key) <= '2017-03-30' THEN 'Y' ELSE 'N' END) as Sold
FROM table1
GROUP BY table1
答案 1 :(得分:0)
您可以使用以下查询来实现此目的:
Select product,(case when min(date_key)<='2017-03-
30' then 'y' else 'n' end) as sold from table1 group by product
答案 2 :(得分:0)
如果我正确理解您的问题,即您需要将列date_key
与date value
(在您的示例中为2017-03-30
)进行比较,如果更少,则返回{{1} } else Y
。在那种情况下,我认为不需要聚合。
您只需要N
。
case
上述查询中的 select product_offering as Product,
case when date_key <= DATE '2017-03-30' then 'Y' else 'N' end as Sold
from table1
order by product_offering
或<=
取决于您是否要包含<
。
<强>结果:强>
date value
<强> DEMO 强>
P.S。上面的演示也适用于+-------------+------+
| PRODUCT | SOLD |
+-------------+------+
| 1st product | Y |
| 2nd product | N |
| 3rd product | Y |
+-------------+------+
(并且已经过测试)