0

先生,我在 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 中的数据透视语句来计算 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

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

4

1 回答 1

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
于 2012-07-24T05:10:51.257 回答