使用CASE然后获得两个条件之间的共同值

时间:2016-12-15 15:12:30

标签: mysql

我需要获得具有TIME差异的所有用户的个人资料

  1. 不到90天:0
  2. 超过90天:1
  3. 小于90但大于84:2
  4. 现在我已经为此编写了一个查询:

    SELECT COUNT(*) AS COUNT,FILTERED,TYPE,SEEN,CASE
                WHEN DATEDIFF(NOW( ) ,  `TIME` ) <= 90 AND DATEDIFF(NOW( ) ,  `TIME` ) >= 84  THEN 2 
                WHEN DATEDIFF(NOW( ) ,  `TIME` ) <=84 THEN 0
                WHEN DATEDIFF(NOW( ) ,  `TIME` ) >90 THEN 1
                END AS TIME1  FROM newjs.CONTACTS WHERE SENDER='1' AND TYPE IN('A','D','I','E','C') AND  RECEIVER NOT IN('5733000','7277453','9535153','9577787','9649101','99398691','99402429') GROUP BY FILTERED,TYPE,SEEN,TIME1
    

    上述代码的问题是,TIME1 = 2中包含的计数不包含在TIME1 = 0的情况中。我知道我的代码是以这种方式编写的,但我怎样才能实现所需的代码呢?

1 个答案:

答案 0 :(得分:0)

你做不到。假设您根据年龄将人分为儿童和成人。然后你决定你想要一个小组青少年。如果您只有一列,那么如果您想选择孩子,则必须选择值为child或teenager的人。您可以创建一个新列来识别青少年,如果这是您需要的。但是一列不能为同一行提供两个值,这就是您想要的。