2014-05-23 68 views
0

我是Transact SQL新手(SQL Server 2008)。按周丟失值的T-SQL數據透視表

我有,當我按日期範圍搜索值即得到這些結果的數據透視表:

Person  | 2/10/14 | 2/18/14 
-----------+---------+--------- 
Jane Doe | NULL | QRS 
June Jones | NULL | XYZ 
Tom Smith | XYZ  | HIK 

但我需要它看起來像這樣,在六月瓊斯有一個值2/10/14:

Person  | 2/10/14 | 2/17/14 
-----------+---------+-------- 
Jane Doe | NULL | QRS 
June Jones | XYZ  | XYZ 
Tom Smith | XYZ  | HIK 

的問題是,六月瓊斯具有具有14年2月11日一start_dt和的14年2月21日END_DATE應是在列「14年2月10日」和XYZ事件我的查詢似乎缺少它。 '2/17/14'欄目正在收集活動。
我的代碼:

WITH Numbers AS 
(
    SELECT '2/10/14' As n 
    UNION 
    SELECT '2/17/14' As n 
) , 
Counted AS 
(
    SELECT s.[FirstName] + ' ' + s.[LastName] AS [Person], 
    CASE WHEN s.[Event] = 'Thing1' THEN 'HIK' 
     WHEN s.[Event] = 'Thing2' THEN 'QRS' 
     WHEN s.[Event] = 'Thing3' THEN 'XYZ' 
     ELSE NULL END AS [Info],   
     N.n AS DateWeek 
    FROM [dbo].[MyTable] s 
     INNER JOIN Numbers N ON DATEADD(DD,5,N.n) BETWEEN s.start_dt AND s.end_dt 
     WHERE s.LastName in ('Doe', 'Jones', 'Smith')  
    GROUP BY s.[FirstName] + ', ' + s.[LastName], s.[Info], N.n 

) 
SELECT [Person], '02/10/14', '2/17/14' 
FROM Counted 
    PIVOT (MAX(Info) FOR DateWeek IN ([2/10/14], [2/17/14])) 
    AS PVT 

我可能失去了一些東西很明顯,但無法看到它。

+1

請修改您的問題並顯示原始數據。 –

+0

你需要看什麼?這是關於它的。我不得不剝奪很多機密數據。對於數據透視表,我還有很多周,但是如果有幫助的話,它們都以星期一的日期開始。事件的start_dt都是從星期一的日期開始的。這個在2/11/14有一個start_dt的特定的一次性從星期二開始。這有幫助嗎? – user1804209

+0

如果您不能爲我們提供'[MyTable]'的'INSERT'語句,那麼當您在沒有主鍵的情況下執行時,您可以給我們輸出嗎?即與替換最後四行'SELECT * FROM Counted' –

回答

-1

對於第10顯然它顯示爲空,因爲你的事件從11日開始。

+0

對不起已經過了幾天了。我自己得到了答案。謝謝。 – user1804209