2016-03-29 14 views
0
İşte

göre bir sütun içinde grup alanlarına sorgu nasıl ben TOS Değerinin grup belli değerlere ihtiyaçbelli kriterlere

TOS Value  Birmingham CardiffRegus Castlemead Chelmsford 
af11 (DSCP 10) 15.22%   4.63%   0.00%  6.16% 
af12 (DSCP 12) 0.12%   NULL   NULL  NULL 
af21 (DSCP 18) 0.05%   0.05%   0.00%  0.02% 
af31 (DSCP 26) 8.86%   13.85%   0.01%  5.59% 
af32 (DSCP 28) NULL   NULL   NULL  0.02% 
af33 (DSCP 30) 11.49%   15.44%   NULL  7.33% 
af41 (DSCP 34) 0.70%   0.03%   0.01%  0.05% 
cs3 (DSCP 24) 0.06%   0.11%   0.01%  0.04% 
cs4 (DSCP 32) 0.15%   0.20%   NULL  0.10% 
cs6 (DSCP 48) NULL   0.23%   0.00%  NULL 
defau(DSCP 0) 61.37%   61.74%   99.48%  79.78% 
ef (DSCP 46) 1.91%   3.72%   0.49%  0.91% 

: Burada

SELECT  REF.TOS        AS [TOS Value] 
     ,RSA_BIRMINGHAM_1941$.Percentage  AS [Birmingham] 
     ,RSA_CARDIFFREGUS_2911$.Percentage  AS [Cardiff Regus] 
     ,RSA_CASTLEMEAD_1941$.Percentage  AS [Castlemead] 
     ,RSA_CHELMSFORD_1941$.Percentage  AS [Chelmsford] 



FROM  
     (SELECT TOS FROM RSA_BIRMINGHAM_1941$  UNION 
     SELECT TOS FROM RSA_CARDIFFREGUS_2911$  UNION 
     SELECT TOS FROM RSA_CASTLEMEAD_1941$  UNION 
     SELECT TOS FROM RSA_CHELMSFORD_1941$  
     ) AS REF 

FULL OUTER JOIN RSA_BIRMINGHAM_1941$  ON REF.TOS = 
RSA_BIRMINGHAM_1941$.TOS 
FULL OUTER JOIN RSA_CARDIFFREGUS_2911$  ON REF.TOS = 
RSA_CARDIFFREGUS_2911$.TOS 
FULL OUTER JOIN RSA_CASTLEMEAD_1941$  ON REF.TOS = 
RSA_CASTLEMEAD_1941$.TOS 
FULL OUTER JOIN RSA_CHELMSFORD_1941$  ON REF.TOS = 
RSA_CHELMSFORD_1941$.TOS 

ve çıkışı TOS Değer Sütunu ile doğrudan ilişkili oldukları için diğer sütunları etkilemeden "Üst" grubunun altındaki sütun.

i gerçekleştirmek için gerekenleri bir fikir için aşağıdaki resme bakın: Bir çok uzatan Kendiyle yapabilirdi

enter image description here

+0

fotoğraf kaçının. Herkes onları göremez. – mxix

+0

Her bir RSA_SITE tablosunun kendiliğinden birleştirilmesi yönündeki diğer yönlerden, sütunları gerektiği gibi alması ve UNION TÜMÜ bu sorguların her birine – tawman

+0

ulaşması yönünde yaklaşmalıdır. İstenilen sonuca nasıl ulaşacağınızın mantığını anlamıyorum. –

cevap

1

ama bu SQL Server olduğundan biz pivot tablo yararlanabilir sorgu.

SQL Fiddle Example here

SELECT * FROM ( SELECT 'Birmingham' AS [SITE], REF.TOS, Percentage FROM ( SELECT TOS FROM RSA_BIRMINGHAM_1941$ UNION SELECT TOS FROM RSA_CARDIFFREGUS_2911$ UNION SELECT TOS FROM RSA_CASTLEMEAD_1941$ UNION SELECT TOS FROM RSA_CHELMSFORD_1941$ ) AS REF LEFT OUTER JOIN RSA_BIRMINGHAM_1941$ RSA ON RSA.TOS = REF.TOS ) BIRM PIVOT (SUM(Percentage) FOR TOS in ( [ef (DSCP 46)], [af31 (DSCP 26)], [af32 (DSCP 28)], [af33 (DSCP 30)], [cs3 (DSCP 24)], [cs4 (DSCP 32)], [cs6 (DSCP 48)], [af41 (DSCP 34)], [af42 (DSCP 36)], [af43 (DSCP 38)], [af21 (DSCP 18)], [af22 (DSCP 20)], [af23 (DSCP 22)], [af11 (DSCP 10)], [af12 (DSCP 12)], [af13 (DSCP 14)], [defau(DSCP 0)]) ) PIV UNION ALL SELECT * FROM ( SELECT 'Cardiff Regus' AS [SITE], REF.TOS, Percentage FROM ( SELECT TOS FROM RSA_BIRMINGHAM_1941$ UNION SELECT TOS FROM RSA_CARDIFFREGUS_2911$ UNION SELECT TOS FROM RSA_CASTLEMEAD_1941$ UNION SELECT TOS FROM RSA_CHELMSFORD_1941$ ) AS REF LEFT OUTER JOIN RSA_CARDIFFREGUS_2911$ RSA ON RSA.TOS = REF.TOS ) CARD PIVOT (SUM(Percentage) FOR TOS in ( [ef (DSCP 46)], [af31 (DSCP 26)], [af32 (DSCP 28)], [af33 (DSCP 30)], [cs3 (DSCP 24)], [cs4 (DSCP 32)], [cs6 (DSCP 48)], [af41 (DSCP 34)], [af42 (DSCP 36)], [af43 (DSCP 38)], [af21 (DSCP 18)], [af22 (DSCP 20)], [af23 (DSCP 22)], [af11 (DSCP 10)], [af12 (DSCP 12)], [af13 (DSCP 14)], [defau(DSCP 0)]) ) PIV UNION ALL SELECT * FROM ( SELECT 'Castlemead' AS [SITE], REF.TOS, Percentage FROM ( SELECT TOS FROM RSA_BIRMINGHAM_1941$ UNION SELECT TOS FROM RSA_CARDIFFREGUS_2911$ UNION SELECT TOS FROM RSA_CASTLEMEAD_1941$ UNION SELECT TOS FROM RSA_CHELMSFORD_1941$ ) AS REF LEFT OUTER JOIN RSA_CASTLEMEAD_1941$ RSA ON RSA.TOS = REF.TOS ) CASTLE PIVOT (SUM(Percentage) FOR TOS in ( [ef (DSCP 46)], [af31 (DSCP 26)], [af32 (DSCP 28)], [af33 (DSCP 30)], [cs3 (DSCP 24)], [cs4 (DSCP 32)], [cs6 (DSCP 48)], [af41 (DSCP 34)], [af42 (DSCP 36)], [af43 (DSCP 38)], [af21 (DSCP 18)], [af22 (DSCP 20)], [af23 (DSCP 22)], [af11 (DSCP 10)], [af12 (DSCP 12)], [af13 (DSCP 14)], [defau(DSCP 0)]) ) PIV UNION ALL SELECT * FROM ( SELECT 'Chelmsford' AS [SITE], REF.TOS, Percentage FROM ( SELECT TOS FROM RSA_BIRMINGHAM_1941$ UNION SELECT TOS FROM RSA_CARDIFFREGUS_2911$ UNION SELECT TOS FROM RSA_CASTLEMEAD_1941$ UNION SELECT TOS FROM RSA_CHELMSFORD_1941$ ) AS REF LEFT OUTER JOIN RSA_CHELMSFORD_1941$ RSA ON RSA.TOS = REF.TOS ) CHEM PIVOT (SUM(Percentage) FOR TOS in ( [ef (DSCP 46)], [af31 (DSCP 26)], [af32 (DSCP 28)], [af33 (DSCP 30)], [cs3 (DSCP 24)], [cs4 (DSCP 32)], [cs6 (DSCP 48)], [af41 (DSCP 34)], [af42 (DSCP 36)], [af43 (DSCP 38)], [af21 (DSCP 18)], [af22 (DSCP 20)], [af23 (DSCP 22)], [af11 (DSCP 10)], [af12 (DSCP 12)], [af13 (DSCP 14)], [defau(DSCP 0)]) ) PIV;

+0

Bu işe yaradı, bu arkadaş için teşekkürler! –

İlgili konular