好麻烦,这个语句是关联两个表取数据,如果有匹配就显示原始数据,没有就为0,怎么弄呢?
销售表: details
create table details(productid int,orderdate datetime,quantity int)
insert into (1,'2005-3-2 14:00:00',20)
insert into (1,'2005-3-2 15:00:00',null)
insert into (1,'2005-3-2 15:40:00',15)
insert into (1,'2005-3-3 6:00:00',20)
insert into (2,'2005-3-2 15:30:00',null)
insert into (3,'2005-3-2 14:00:00',22)
日期表: #temp
create table #temp(dates datetime)
insert into #temp values ('2005-3-2 11:00:00')
insert into #temp values ('2005-3-2 14:00:00')
insert into #temp values ('2005-3-2 17:00:00')
现在就是要找出details表中的日期与#temp表的日期相匹配的记录(日期以#temp表为准,#temp表如果有三个日期,就要取三条记录)
如果匹配就取出这条记录,如果不匹配就把quantity设为0
要取的结果如下:
如果选择的productid=1
1,'2005-3-2 11:00:00',0
1,'2005-3-2 14:00:00',20
1,'2005-3-2 17:00:00',0
如果选择的productid=2
2,'2005-3-2 11:00:00',0
2,'2005-3-2 14:00:00',0
2,'2005-3-2 17:00:00',0
如果选择的productid=3
3,'2005-3-2 11:00:00',0
3,'2005-3-2 14:00:00',22
3,'2005-3-2 17:00:00',0
问题点数:80、回复次数:2Top
1 楼Mrzhang666()回复于 2005-04-03 14:34:39 得分 40
select a.datetime,b.productid,isnull(b.quantity,0) from #temp a left join details b on a.datetime=b.datetime
order by
b.productidTop
2 楼wqhj2000(阿杰)回复于 2005-04-03 15:06:38 得分 40
DECLARE @prdt_id int
set @prdt_id=1
SELECT
isnull(details.productid,@prdt_id),
#temp.dates,
isnull(details.quantity,0)
FROM details
right join #temp
on details.orderdate=#temp.dates
Top




