2014-02-10 24 views
0

確定我的頭可能使這種聲音很確實簡單,但我也有情況是這樣的:我怎樣才能在第一所需行之前刪除數據選擇的

我需要得到所有實踐的一年中每一週成本爲0,然後更新到插入這些實踐的表變量。見的代碼和示例如下片段: - 54

這是數據

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 

現在fiscalweek計數主要插入從1我只是不能把這些都放在這裏,而且有很多不同的參賽項目,不僅僅是這些參賽項目,所以例如練習110可能會在第3,7,12和17周等有些費用。我需要什麼要做的是從這個表中刪除變量或臨時表tabl我不介意在列表中的第一個實際值條目之前的零成本條目。

因此,例如,如果練習110在第2周具有其第一個非零成本,則刪除第1周的行,但如果練習109在第18周具有其第一個實際的非零成本,則在第18周。但我不想刪除有成本的星期之間的零成本行。基本上,這是我可以在幾周內運行平均成本,這是一個實踐從他們擁有的第一個非零成本中獲得的成本。

如果所有實踐在同一周內都有成本,並且如果我不關心中間的零成本,但我需要保留那些介於兩者之間的成本,這將是直截了當的。

我認爲這將是簡單的,但我的想法已經試圖解決這個問題。

回答

1

爲什麼你不把它們擺在首位呢?做這樣的事情:

select * 
from 
(your existing query goes here) temp 
where cost > 0 

此外,插入查詢中的order by子句可能不是必需的。

+0

我已經使用了交叉連接來創建一個針對每種練習的0費用列表,以便我可以用相應的數字更新所需的費用。這是我能夠獲得所有財政週數的唯一方式,否則任何其他加入(左,右,滿等)只會返回有成本的實際財政周。 我不需要在插入的順序,你在那裏是正確的。通過選擇所有成本大於0的地方,我們將會在具有實際數字的星期之間失去零條目。 – user3111531

相關問題