2011-10-21 31 views
6

Düzenleme: COALESCE yöntemini denedikten sonra, verilerin her bir vat kategorisi için aynı verilerle tekrarlandığı bir sorun görüyorum. Sütun 2, voltajdır. enter image description hereFarklı verilerle aynı iki tablo yapısını birleştir

Her ikisi de aynı tablo yapısına sahip iki geçici tablo oluşturdum. Bu tablolarda, aynı değerlere sahip birden çok sütun ve daha sonra farklı sayılara sahip birkaç değer sütunları vardır. Bunlardan bazıları bir sütunda NULL, diğerinde boş değil. Tüm değerleri bir araya getirmek istiyorum, aynı site ve bitkilerle birlikte satırlara katılmış değerleri birleştirmek istiyorum.

SITE  PLANT   VALUE_1   VALUE 2 
S1  P1    54    66 
S1  P2    43    43 

TABLO 2:

SITE  PLANT   VALUE_1   VALUE_2 
S1  P1   33    43 
S2  P1   34    22 

SONUCU: Burada

iki tablo gibi görünebilir ve sonuç ben

TABLO1 beklediğiniz bir örnektir

SITE  PLANT   t1_VALUE_1 t1_VALUE_2 t2_VALUE_1  t2_VALUE2 
S1  P1   54   66   33    43 
S1  P2   43   43   NULL   NULL 
S2  P1   NULL   NULL   34    22 

Özgünüm düşünceler tam bir katılım olur. Ancak, bu işe yaramaz çünkü seçtiğiniz ifadede, site ve tesis gibi sütunların nereden alınacağını belirtmeniz gerekir; ama t1.site ve t2.site'nin her ikisini de seçmek iki sütun oluşturur. Elimdeki en yakın şey aşağıdaki sorgu idi, ancak S1'de S1'de olmayan bir site ve bitkiye sahip bir sonuç olduğunda, S1 ve S2 için boş değerler alıyorsunuz.

SELECT t1.Site, t1.Plant, t1.Value_1, t1.Value_2, t2.Value_1, t2.Value_2 
FROM table1 t1 
FULL JOIN table2 t2 
ON t1.site = t2.site 
AND t1.plant = t2.plant 
+0

HTML biçimlemeyi kullanmayın. Korunan alanlarla tablo yapıştırmak için "kod olarak biçimlendir" simgesini kullanın. –

+0

@ Tom - S1 ve S2 bir sütun veya tablo olarak listelenmez. Aslında neye atıfta bulunuyorsun? –

cevap

1

coalesce'u kullanabilirsiniz. Parametrelerden ilk olmayan boş değer döndürecektir.

4

Bu sorguyu tamamlamak için iki numaraya ihtiyaç vardır. Birincisi bir FULL JOIN. Tam birleştirme, her iki tabloyu birleştirmenize ve birleştirme koşulunu eşleştirmediğinizde iki tabloda da boş değerler eklemenize olanak tanır. Ikinci COALESCE, hangi bitki ve site tablolardan hangisi sonuçlarda bu satır için bir kayıt sağlar izin verir.

SELECT Coalesce(t1.Site,t2.Site) As Site, COALESCE(t1.Plant, t2.Plant) As Plant, 
    t1.Value_1 As t1_Value_1, t1.Value_2 As t1_Value_2, 
    t2.Value_1 As t2_Value_1, t2.Value_2 As t2_Value_2 
FROM Table1 t1 
FULL JOIN Table2 t2 ON t1.Site = t2.Site AND t1.Plant = t2.Plant 
+0

Girdi için teşekkürler, birleştirme işlevinde akıllı olmalıyım. Lütfen güncellenmiş soruya bakın – Tom

İlgili konular