确定我的标题可能会让这个声音变得非常简单,但我所拥有的场景是:
我需要获得一年中每周的所有练习,费用为0,然后更新表格变量,插入这些练习。请参阅下面的代码片段和示例:
这是数据的主要插入
insert into @Weeks
select [practice id], name, description, fiscalweek, 0 as cost from dbo.Main
cross join dbo.Time
where Main.[Practice id] IN (110,109,2,3,4,5,6,7,8)
AND Main.[TreatmentSchemeDescription] IN ('Access+','Access +')
group by [practice id], name, description, fiscalweek
order by [practice id]
产生类似这样的数据
practice id fiscalweek cost
109 16 0.00
109 17 0.00
109 18 258.00
109 19 0.00
109 20 0.00
109 21 80.00
109 22 0.00
109 23 0.00
109 24 0.00
109 25 0.00
109 26 0.00
109 27 0.00
109 28 0.00
109 29 0.00
109 30 0.00
109 31 0.00
现在财政周的计数从1到54不等,我无法证明将它们全部放在这里并且有许多不同周的条目实践,而不仅仅是这些,所以例如练习110可能在几周内有成本3,7,12和17等。我需要做的是从这个表变量或临时表中删除哪些工作我不介意,列表中第一个实际值输入之前的零成本条目。
因此,例如,如果练习110在第2周具有其第一个非零成本,则删除第1周的行,但是如果练习109在第18周具有其第一个实际的非零成本,则在周之前删除所有零个条目18.但我不想删除有成本的周数之间的零成本行。基本上这是因为我可以在几周内平均花费成本来实践从他们拥有的第一个非零成本中获得成本。
如果所有实践在同一周内都有成本,如果我不关心中间的零成本,那么这将是直截了当的,但我需要保留介于两者之间的成本。
我认为这很简单,但我的思绪已经试图解决这个问题。
答案 0 :(得分:1)
为什么你不首先把它们放在那里。做这样的事情:
select *
from
(your existing query goes here) temp
where cost > 0
此外,插入查询中的order by子句可能不是必需的。