【发布时间】:2014-03-22 04:09:47
【问题描述】:
我有一张如下表:
Book BookSales Date
BookA $1 2013-03-04
BookB $2 2013-03-04
BookA $3 2013-03-05
... ...
我运行查询 -
select book,booksales,date
from tblBook
where date>='03/03/2013'
and date<='03/05/2013'
and book in ('BookA','BookB')
order by date,book
现在它返回如下结果
BookA $1 2013-03-04
BookB $2 2013-03-04
BookA $3 2013-03-05
但我想要的是返回书 b 的空结果($0),如果它在该日期不存在,如下所示)。此处,日期为 2013-03-05 的书 b 的记录不存在。
BookA $1 2013-03-04
BookB $2 2013-03-04
BookA $3 2013-03-05
BookB $0 2013-03-05 <-- I want to include this record
我怎样才能做到这一点?如果无法实现这种方式,我可以考虑其他什么方法?
【问题讨论】:
-
你有主键吗?
-
是的,有一个主键 'id(int)'。它是一个身份密钥。
-
您的问题令人困惑。上下文中的 empty result ($0) 是什么?此外,预期结果集中包含的 $0 图书的日期确实具有 2013-03-05。
-
@Crono:$0 是图书销售额。原始表中不存在日期为 2013-03-05 的书 b 的记录。如果该日期不存在记录,则应包括该日期的图书销售额(0 美元)。
-
啊,我想我现在明白了。您需要一个日期表才能加入。
标签: sql sql-server sql-server-2008 tsql