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

このように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、方位はメイン データ テーブルにはありませんが、最終結果には必要です。

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 に答える