2012-07-24 70 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