Bu konuyla ilgili başka bir soru göndermek için özür dilerim, ancak bu konudaki cevapların çoğunu okudum ve benim için işe yaramayacak gibi görünmüyorum.SQL Server 2008 Dikey verilere yatay
Üç tabloya katılıyorum ve bilgi çekmem gerekiyor. Tablolardan biri sadece 3 sütundur ve verileri dikey olarak depolar. Bu verileri yatay bir formatta aktarmak istiyorum.
SELECT
a.app_id,
b.field_id,
c.field_name,
b.field_value
FROM table1 a
JOIN table2 b ON a.app_id = b.app_id
JOIN table3 c ON b.field_id = c.field_id --(table3 is a lookup table for field names)
Sonuç: Yerine
app_id | field_id | field_name | field_value
-----------------------------------------------------
1234 | 101 | First Name | Joe
1234 | 102 | Last Name | Smith
1234 | 105 | DOB | 10/15/72
1234 | 107 | Mailing Addr | PO BOX 1234
1234 | 110 | Zip | 12345
1239 | 101 | First Name | Bob
1239 | 102 | Last Name | Johnson
1239 | 105 | DOB | 12/01/78
1239 | 107 | Mailing Addr | 1234 N Star Ave
1239 | 110 | Zip | 12456
, ben böyle bakmak için istiyorum:
app_id | First Name | Last Name | DOB | Mailing Addr | Zip
--------------------------------------------------------------------------
1234 | Joe | Smith | 10/15/72 | PO BOX 1234 | 12345
1239 | Bob | Johnson | 12/01/78 | 1234 N Star Ave | 12456
Sadece katılmak ve çekerseniz
veriler aşağıdaki gibi görünecektir
Geçmişte, verilerimde ihtiyaç duyduğum tüm field_id'leri aramaya başvurdum ve her biri için CASE ifadeleri oluşturdum. Kullanıcıların kullandıkları uygulama, birden fazla ürün için veri içerir ve her ürün farklı alanlar içerir. Desteklenen ürün sayısı ve her bir ürün için alan sayısı göz önünde bulundurulduğunda (yukarıda gösterdiğim temel örneklerden çok daha fazlası), onları aramak ve CASE ifadelerinin büyük parçalarını yazmak uzun zaman alır.
Field_ids'e bakıp bir şeyler yazmasına gerek kalmadan ihtiyacım olanı elde etmek için orada bir hile kodu var mı diye merak ediyordum. PIVOT fonksiyonunun muhtemelen aradığım şey olduğunu biliyorum, ancak doğru şekilde çalışmasını sağlayamıyorum.
Yardım edebilir misiniz?
Bu tam ihtiyacım budur.Seni reddetmek için bir temsilcim yok, ama buralarda başka biri bunu görüyorsa, lütfen bana destek olun! –