SQL存储过程 - 固定列数据

时间:2012-07-24 03:56:43

标签: sql-server sql-server-2008 stored-procedures

先生,我在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

我在SQL中使用了一个pivot语句,用于像这样的Rlys中的计数设备

 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

使用这个我面临的问题是,只要设备没有出现在数据表中,就不会出现在pivot语句中。但我的要求是每个设备都会出现在主数据表中可用的数据透视表中,以便始终固定表行。请帮助左侧栏中的设备名称固定。对于例如SIV,TFP&轴承不在主数据表中,但在最终结果中是必需的。

1 个答案:

答案 0 :(得分: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