【发布时间】:2011-05-20 22:40:02
【问题描述】:
我使用的是 Oracle 10g,我有一个名为 downloads 的表,基本上如下所示:
ID DOWNLOAD_DATE
1 2011-02-10
2 2011-03-10
3 2011-04-10
4 2011-05-10
5 2011-01-11
6 2011-04-22
7 2011-02-18
8 2011-03-14
9 2011-02-01
10 2011-01-31
等等
我想执行一个返回以下内容的查询:
Downloads today
Downloads yesterday
Downloads from start date until today
Downloads on start date
Downloads on day after start date
我想将结果打印成两列。在第一列中,我想放置一个静态标签,就像上面的那些。第二列是计数。
我尝试过这样的事情:
select count(id) from downloads where download_date = '2007-08-06'
union
select count(id) from downloads where download_date = '2007-08-08'
但这有两个问题。一,它只打印一列,即计数。第二,如果给定日期(或日期范围)没有数据,则不会打印任何内容。我需要打印一个零。
然后我尝试了这样的事情:
select download_date, count(download_date) from downloads where download_date = '2007-08-06'
group by download_date
union
select download_date, count(download_date) from downloads where download_date > '2007-08-08'
group by download_date
这将返回两列,但第一列不是静态的,它是数据库中的一个字段 (download_date)。更重要的是,它返回多行用于选择日期范围的查询(其中 download_date > '2007-08-08'),而我只想要一行,以及它的计数。
我该怎么做?
非常感谢, 鲍勃
【问题讨论】: