【问题标题】:CASE statement not providing needed answerCASE 声明未提供所需答案
【发布时间】:2017-11-17 04:01:12
【问题描述】:

我有一个非常大的表格,其中显示了产品和事件类型的每日记录。我愿意重新安排下面查询的编写方式,但认为 case 语句将为我提供必要的输出。

表_1:

DATES      PRODUCT  EVENT
5/20/2017   APPLE   SALE
5/21/2017   APPLE   SALE
5/22/2017   APPLE   SALE
5/23/2017   APPLE   SALE
5/24/2017   APPLE   SALE
5/25/2017   APPLE   SALE
5/26/2017   APPLE   SALE
5/27/2017   APPLE   FULL PRICE
5/28/2017   APPLE   FULL PRICE
5/29/2017   APPLE   FULL PRICE
5/30/2017   APPLE   FULL PRICE
5/31/2017   APPLE   FULL PRICE
6/1/2017    APPLE   FULL PRICE
6/2/2017    APPLE   FULL PRICE
6/3/2017    APPLE   FULL PRICE
6/4/2017    APPLE   FULL PRICE
6/5/2017    APPLE   FULL PRICE
6/6/2017    APPLE   FULL PRICE
6/7/2017    APPLE   LIQUIDATION
6/8/2017    APPLE   LIQUIDATION
6/9/2017    APPLE   LIQUIDATION
6/10/2017   APPLE   LIQUIDATION
6/11/2017   APPLE   LIQUIDATION
6/12/2017   APPLE   LIQUIDATION
6/13/2017   APPLE   LIQUIDATION
6/14/2017   APPLE   LIQUIDATION
5/20/2017   BANANA  SALE
5/21/2017   BANANA  SALE
5/22/2017   BANANA  SALE
5/23/2017   BANANA  SALE
5/24/2017   BANANA  SALE
5/25/2017   BANANA  SALE
5/26/2017   BANANA  SALE
5/27/2017   BANANA  SALE
5/28/2017   BANANA  SALE
5/29/2017   BANANA  SALE
5/30/2017   BANANA  FULL PRICE
5/31/2017   BANANA  FULL PRICE
6/1/2017    BANANA  FULL PRICE
6/2/2017    BANANA  FULL PRICE
6/3/2017    BANANA  FULL PRICE
6/4/2017    BANANA  FULL PRICE
6/5/2017    BANANA  FULL PRICE
6/6/2017    BANANA  FULL PRICE
6/7/2017    BANANA  FULL PRICE
6/8/2017    BANANA  FULL PRICE
6/9/2017    BANANA  FULL PRICE
6/10/2017   BANANA  FULL PRICE
6/11/2017   BANANA  FULL PRICE
6/12/2017   BANANA  FULL PRICE
6/13/2017   BANANA  FULL PRICE
6/14/2017   BANANA  FULL PRICE

当前查询:

select
    product,
    case when event in ('liquidation') then 'yes' else 'no' end LIQ,
    count(dates) as days
FROM TABLE_1
where dates between '5/20/2017' and '6/14/2017'
group by
    product

我想要一个按产品分类的记录,如果它在日期范围内处于清算状态,是/否。此查询执行,但给出以下结果:

PRODUCT   LIQ         DAYS
APPLE     NO           18
APPLE     YES           8
BANANA    NO           26

如果产品在 2017 年 5 月 20 日至 2017 年 6 月 14 日之间清算,我正在寻找一个简单的“是”或“否”。这是我正在寻找的内容:

PRODUCT    LIQ        DAYS
APPLE      YES         26
BANANA     NO          26

谢谢!

【问题讨论】:

    标签: sql date case teradata between


    【解决方案1】:

    下面使用“yes”和“no”的属性即“yes”>“no”:

    select product,
           max(case when event in ('liquidation') then 'yes' else 'no' end) as LIQ,
           count(dates) as days
    from TABLE_1
    where dates between '2017-05-20' and '2017-06-14'
    group by product;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      相关资源
      最近更新 更多