2013-01-09 85 views
0

嗨,夥計們我一直在徘徊如何解決這個問題,現在我只是卡住了。希望這個問題對社區有用。在趨勢表中添加分類

我有一個像下面第一個表一樣的數據的趨勢表。我有另一個表類如下面的第二個表。目標是在堆積的柱狀圖中顯示數據。圖表中的每一列都是當天的最後一個樣本,每列的系列組將是電路類別。

數據從每10分鐘採樣,但例如起見,我剛進入2個樣本的每一天:

time_stamp | circuit1 | circuit2 | circuit3 

1/5/13 08:00 | 50 | 60 | 30 

1/5/13 04:00 | 48 | 55 | 26 

1/4/13 08:00 | 42 | 52 | 22 

1/4/13 04:00 | 40 | 51 | 20 

我有一個類似的類別表:

Circuit_name | circuit_category 

circuit1 | category4 

circuit2 | category2 

circuit3 | category12 

也許是我沒有想到的一個簡單的方法嗎THI期從報表的觀點來看,但爲了白天一樣的要求得到一個堆積條形圖一天,我想我需要查詢其結果如下:

time_stamp | Circuit_name | Circuit_category | Value 

1/5/13 08:00 | Circuit1 | category4 | 50 

1/5/13 08:00 | Circuit2 | category2 | 60 

1/5/13 08:00 | Circuit3 | category12 | 30 

1/4/13 08:00 | Circuit1 | category4 | 42 

1/4/13 08:00 | Circuit2 | category2 | 52 

1/4/13 08:00 | Circuit3 | category12 | 22 

我想我需要寫一個查詢來抓取按日期分組的max(time_stamp),但是將結果轉爲可以將數據加入到類別表中。我已經在第一個表上使用了pivot了,因爲我必須將table2中的circuit_name連接到table1中的實際列名,但是我一直跑到死角,因爲我不太理解pivot。

無論如何,我願意放棄表2,如果硬編碼電路類別到查詢是必要的,但這又是我卡住的地方。任何指導將不勝感激。

數據位於sql2008r2服務器上。

謝謝!

回答

0

這看起來像unpivot列到行... SQL Server有這個功能:)我相信下面的查詢可以改進和優化。請在您嘗試後請求評論。

查詢:

select m.*, t.cat 
from 
(SELECT ts, name, value 
FROM 
(
    SELECT ts, 
    CONVERT(varchar(20), C1) AS c1, 
    CONVERT(varchar(20), C2) AS c2, 
    CONVERT(varchar(20), C3) AS c3 
    FROM t2 
) MyTable 
UNPIVOT 
(Value FOR name IN 
(c1,c2,c3))AS MyUnPivot) m 
left join t1 t 
on t.name = m.name 
; 

結果:

TS        NAME VALUE CAT 
January, 05 2013 08:00:00+0000 c1  50  category4 
January, 05 2013 08:00:00+0000 c2  60  category2 
January, 05 2013 08:00:00+0000 c3  30  category12 
January, 05 2013 04:00:00+0000 c1  48  category4 
January, 05 2013 04:00:00+0000 c2  55  category2 
January, 05 2013 04:00:00+0000 c3  26  category12 
January, 04 2013 08:00:00+0000 c1  42  category4 
January, 04 2013 08:00:00+0000 c2  52  category2 
January, 04 2013 08:00:00+0000 c3  22  category12 
January, 04 2013 04:00:00+0000 c1  40  category4 
January, 04 2013 04:00:00+0000 c2  51  category2 
January, 04 2013 04:00:00+0000 c3  20  category12 
+0

@ user1960571 pleaes給此查詢一試。 – bonCodigo

+0

bonCodigo, 非常感謝您的迴應!最近我有幾起火災發生。只要我有機會測試這一點,我一定會迴應! 謝謝, Marcus – xMarcus