我想我的组数据基于年龄。我用以下数据库的选择:

select * from (
select 0 range_start, 11 range_end, '0-10 days' date_description from dual union
select 11, 21, '11-20 days' from dual union  
select 21, 31, '21-30 days' from dual union  
select 31, 99999, '31+ days' from dual) date_helper
left outer join table
on table.date <= date_helper.range_start*-1 + sysdate 
and table.date > date_helper.range_end*-1 + sysdate 

然后,我让一个小组根据date_description列。我想让它显示所有团体,即使没有记录,属于该小组。如果没有记录,我希望它具有的价值为0,并且仍然打印的小组。

有帮助吗?

解决方案

扩大对高级用户的回答评论,如果您使用的是版本的Crystal,使您可以输入自己的SQL(而不必使用水晶的数据库专家),您可以设置充当一个辅助的子查询表 - 是这样的:

select * from (
select 0 range_start, 11 range_end, '0-10 days' date_description from dual union
select 11, 21, '11-20 days' from dual union  
select 21, 31, '21-30 days' from dual union  
select 31, 99999, '31+ days' from dual) date_helper
left outer join 
(select sysdate-5 mydate from dual union all 
 select sysdate - 25 from dual) mytable
on mytable.mydate <= date_helper.range_start*-1 + sysdate 
and mytable.mydate > date_helper.range_end*-1 + sysdate 

(甲骨文语法 - 查询的精确语法将根据要在其上使用SQL方言而变化)

编辑:从SQLServer的更改为与Oracle语法

进一步编辑:增加了一些简单的样本数据

其他提示

(+1的完整性的问题。欢迎来如此!)

如果没有记录为一个集团,然后晶显然不能报告。我建议创建一个"助手"表在你的数据源。这里是我会做什么使用一些形式的SQL:

  1. 做一个'助手'表。它将有1列,并将包含所有群体,你想要显示。如果名字的团体都是动态的,你可能希望使用"选择"查询或化表格的查询。

  2. 右加入你的帮手表给你的数据表。发送的数据结合起来的水晶。

  3. 在水晶,使用助手表是列在你集团和agebucket计算。

还有,在你的计算,你应该添加一条线: Else "No age";

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top