在查询返回时没有数据时输入虚拟行

时间:2015-04-16 06:28:42

标签: sql sql-server sql-server-2008 insert

我运行一个使用i excel的查询。数据每周更新一次,通过一个程序。有时,程序返回时没有数据。在这些情况下,我想添加一个带有日期的虚拟行,因此excel的用户看到此日期没有数据。

我有一个名为TAG的专栏。标签1-4。如果标签3没有数据返回,我想插入一行。

我只有一个tmp表。如果它不包含标记3的数据,我想添加一个只有日期但没有数据的虚拟行

CREATE procedure [dbo].[pr_quality_weekly]
as
begin   

insert into #tmp(date_run,country,tag,company,campaign,seller,orderdate,reg_date,enddate,cust_desc1,cust_desc2,phone_1,phone_2,delivery,reason,date_of_birth,product)

Select  * FROM prod_no
where date between datfrom and dateto

insert into #tmp(date_run,country,tag,company,campaign,seller,orderdate,reg_date,enddate,cust_desc1,cust_desc2,phone_1,phone_2,delivery,reason,date_of_birth,product)

Select  * FROM prod_se
where date between datfrom and dateto

Insert into prod_weekly (date_run,country,tag,company,campaign,seller,orderdate,reg_date,enddate,cust_desc1,cust_desc2,phone_1,phone_2,delivery,reason,date_of_birth,product)
(Select date_run,country,tag,company,campaign,seller,orderdate,reg_date,enddate,cust_desc1,cust_desc2,phone_1,phone_2,delivery,reason,date_of_birth,product 
from #tmp)

END

1 个答案:

答案 0 :(得分:0)

虽然我不知道你的代码在做什么,创建该行可能很简单,但如果你的prod周表中有NOT NULL列,那么你必须提供空字符串作为填充

Select date_run,country,days.tag,company,campaign
     , seller,orderdate,reg_date,enddate
     , cust_desc1,cust_desc2
     , phone_1,phone_2,delivery,reason,date_of_birth,product 
from (values (1),(2),(3),(4),(5)) days(tag)
left join #tmp on days.tag=#temp.tag