2013-06-20 47 views
-1
Table1: 
id | value | date 
1 1  1/01/2012 
1 2  2/02/2012 
2 1  3/01/2012 
2 4  4/01/2012 
3 2  5/01/2012 
4 1  5/04/2012 

假設表我有大約100萬條記錄,我想創建一個PIVOT表,但是因爲我有SQL Server 2000不能使用PIVOT函數。運行sql多次改變參數

的問題是是,我需要這些記錄,每週進行分類和分類,每週意記錄的記錄數分別爲前2012-WK1其次是WK2,WK3等在那裏讓。

我已經寫了使用rank函數給出輸出的sql,但是我需要每次運行查詢時都要傳遞一個日期。所以我把查詢放在每週自動增加的while循環中。

主要問題:目前,當我運行查詢時,它會在每次迭代時返回1個結果。我想實現的是能夠將所有這些結果放入視圖中,但是,我不想創建表並插入記錄,然後將其顯示爲視圖。

+0

你可以發佈你的SQL查詢,所以我們可以看看你已經嘗試過嗎? – JanR

+0

@harshadbhatia:添加一些示例輸出。您可以使用http://sqlfiddle.com/#!3。 –

回答

0

我用在我創建了一個基於我的數據的功能更簡單的方法,並沒有交叉的日期,我需要的數據應用和過濾它的行是否有效或者不現在,這給了我更好的結果。

Select * FROM (
Select *, CASE WHEN weekNo(Tableweeks) < week(TableX) THEN 1 ELSE 0 END 'Valid' 
from tableX CROSS APPLY Tableweeks) 
WHERE Valid = 1 
0

您想在一年內每週計算一次結果嗎?如果是這樣,像這樣將工作:

select dateadd(day, 7*n.week, '2013-01-01'), count(*), sum(value) 
from Table1 t1 join 
    (select 0 as week union all select 1 as week union all select 2 as week 
    ) n 
    on datediff(day, '2013-01-01', [date]) between 7*n.week and 7*n.week + 6 
group by n.week;