2012-07-24 128 views
0

先生,我有一個SQL表中有以下數據。SQL存儲過程 - 固定列數據

ID Date  Rly Equipment  Type  
    1 3-Apr-12  SR  SIV  R 
    2 3-Apr-12  SER TM  I 
    3 3-Apr-12  NR  3PH  I 
    4 3-Apr-12  NCR 3PH  R 
    5 3-Apr-12  WR  ARNO  I 
    6 3-Apr-12  WR  EMC  I 
    7 3-Apr-12  SR  EMC  R 
    8 3-Apr-12  SR  Pn. Pipeline I 

我在Rlys使用樞軸語句在SQL的計數設備,這樣

Equipment   SER NR NCR WR SR TTL 
    SIV         1  1 
    TM    1       1 
    3PH      1 1    2 
    EMC        1 1  2 
    ARNO        1   1 
    Pn. Pipeline       1  1 

如果使用這種我面對的是,每當一個設備是不是在數據表中出現的問題不會出現在樞軸聲明中。但是我的要求是,每個設備都會顯示在主數據表中的數據透視表中,或者不會固定表格行。請幫助確定左側欄中的設備名稱。對於例如SIV,TFP &軸承不在主數據表中,但在最終結果中需要。

+1

您是否有要顯示的所有設備的來源? – 2012-07-24 04:47:51

+1

**什麼**數據庫系統,以及哪個版本? * SQL *只是*結構化查詢語言* - 許多數據庫系統使用的語言,但不是數據庫產品...存儲過程代碼和功能非常特定於供應商 - 所以我們真的需要知道什麼**數據庫系統**您正在使用.... – 2012-07-24 04:55:23

回答

0

給你一定知道一些其他的表存在什麼樣的設備,從左側創建您的數據透視設備連接到數據

即:如果您的查詢目前看起來像

select equipment, ser, nr, ncr, wr, sr 
from 
(select rly, equipment from #data) as source 
pivot 
(count(rly) for rly in ([ser], [nr], [ncr], [wr], [sr])) as p 

和你的裝備表爲#eq,然後將您的查詢更改爲

select eqcode, ser, nr, ncr, wr, sr 
from 
(select rly, eqcode from #eq left join #data on #eq.eqcode=#data.equipment) as source 
pivot 
(count(rly) for rly in ([ser], [nr], [ncr], [wr], [sr])) as p 
+0

是的,先生,所有的設備已經由用戶在下拉列表的幫助下定義和提交。我正在使用SQL Server 2008。 – user1235981 2012-07-24 06:21:44