Pivot sütun adlarını çoğaltmak ve sütunlar
ben 2 tablolar olduğunu düşünün açıklamada, tüm değerleri olsun. FormFields
, sütun adlarını, döndürülmesi gereken değerlerle ve FilledValues
numaralı ikinci tabloyla birlikte sağlanan FormFieldId
ile doldurulmuş değerleri olarak saklar.
SORUN
Gördüğünüz gibi FormFields
tabloda (NUMUNE bölümünde aşağıda) yinelenen adları, ancak farklı kimlikleri var. Tablolara katıldıktan sonra, FilledValues
tablosundaki tüm değerlerin Id'lere değil, sütun adlarına tahsis edilmesi gerekir.
Neye ihtiyacım var, aşağıdaki OUTPUT bölümünde göreceksiniz.
NUMUNE VERİLERİ
FormFields
ID Name GroupId
1 col1 1
2 col2 1
3 col3 1
4 col1 2
5 col2 2
6 col3 2
FilledValues
ID Name FormFieldId GroupID
1 a 2 1
2 b 3 1
3 c 1 1
4 d 4 2
5 e 6 2
6 f 5 2
ÇIKIŞ
col1 col2 col3
c a b -- As you see It returning only values for FormFieldId 1 2 3
-- d, e, f are lost that because It have duplicate col names, but different id's
ŞİMDİLİK
SELECT * FROM
(
SELECT FF.Name AS NamePiv,
FV.Name AS Val1
FROM FormFields FF
JOIN FilledValues FV ON FF.Id = FV.FormFieldId
) x
PIVOT
(
MIN(Val1)
FOR NamePiv IN ([col1],[col2],[col3])
) piv
Nasıl birden satırlarla OUTPUT üretebilir ÇIKIŞ
col1 col2 col3
c a b
e f d
SORGU İSTENİLEN?
Cevabınız için teşekkür ederiz, bazı 'Gruplar' kısmında küçük bir problem var tüm FormField değerleri boş (hiç değer yok), bu satırları seçmekten nasıl kaçınamıyorum? İşte SQL Fiddle, tüm boş değerlerle GroupId 3 ekledi. Bu satır seçilmemelidir: http://sqlfiddle.com/#!3/2961a/1 –
@ StanislovasKalašnikovas Boşlukları filtrelemek için bir yan tümce kullanın: FilledValues - http://sqlfiddle.com/#!3/2961a/3 – Taryn