2 qq 31071631 qq_31071631 于 2016.01.15 16:38 提问

年龄段查询,在时间段的年龄没有数据,就输出0

SELECT CASE WHEN AGE <= 10 THEN '1' WHEN AGE > 10 AND AGE <= 20 THEN '2' WHEN AGE > 20 AND AGE <= 30 THEN '3' WHEN AGE > 30 AND AGE <= 40 THEN '4' WHEN AGE > 40 AND AGE <= 50 THEN '5' WHEN AGE > 50 AND AGE <= 60 THEN '6' WHEN AGE > 60 AND AGE <= 70 THEN '7' WHEN AGE > 70 AND AGE <= 80 THEN '8' WHEN AGE > 80 AND AGE <= 90 THEN '9' WHEN AGE > 90 AND AGE <= 100 THEN 'a' WHEN AGE > 100 THEN 'b' END allshuju ,COUNT(*) renshu,OUT_WAY leibie FROM WORK_BASY_DATA where OUT_DT >= '2012-10-1' and OUT_DT <='2012-10-31' GROUP BY allshuju,OUT_WAY having OUT_WAY!='' AND allshuju!=''

3个回答

91program
91program   Ds   Rxr 2016.01.15 16:47

建议你:
1) 最好是排一下版面
2) 说明具体的问题

bdmh
bdmh   Ds   Rxr 2016.01.15 16:49

你把条件逐个去掉,或者逐个增加,看看哪个条件影响了你的结果

fk002008
fk002008   2016.01.15 19:42

年龄段查询,在时间段的年龄没有数据,就输出0

你写的SQL有语法错误吧

1--首先指出这个SQL不文有错误
GROUP BY allshuju,OUT_WAY
那么你的select列表的AGE是不是就错了阿。使用了groupby 时候,select的列表项目应该和group by 一致或者是其他项目的聚集函数
你现在的列表中有 AGE,OUT_WAY leibie

你看这两个OUT_WAY leibie 之间没有逗号阿

2--这个查询要逐层进行分解然后再组合进行。采用倒推法来看看
你可以这样思考,什么样的表输出结构你可以简单聚集得到你想要的结果
你看是不是下面这种
leibie AGE renshu
x 1 10
y 2 2
... ... ...

    你在想想如何得到上面的结构呢?
    肯定有分组和聚集操作

    第一步:
    按照你写的SQL文,把这个leibie ,age 也写入到 group by的子句中,我们得到如下输出
    liebie      age
    x              1
    y               1
    z               2
    d               1
    ...               ...
    等这样的数据结构

    第二步
    将第一步的结果作为查询结果集,比如 temp吧
    select  temp.age ,count(*) as renshu 
    from temp group by temp.age


    至于你想输出什么结果自己发挥把
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!