Soru 1: aşağıda yapısı ve veri içeren bir tablo vardır:MySQL Pivot/çapraz sorgu
app_id transaction_id mobile_no node_id customer_attribute entered_value
100 111 9999999999 1 Q1 2
100 111 9999999999 2 Q2 1
100 111 9999999999 3 Q3 4
100 111 9999999999 4 Q4 3
100 111 9999999999 5 Q5 2
100 222 8888888888 4 Q4 1
100 222 8888888888 3 Q3 2
100 222 8888888888 2 Q2 1
100 222 8888888888 1 Q1 3
100 222 8888888888 5 Q5 4
aşağıda biçimde bu kayıtları görüntülemek istiyorum:
app_id | transaction_id | mobile | Q1 | Q2 | Q3 | Q4 | Q5 |
100 | 111 | 9999999999 | 2 | 1 | 4 | 3 | 2 |
100 | 222 | 8888888888 | 3 | 1 | 2 | 1 | 4 |
ben Bu ekranı elde etmek için çapraz tablo/pivot sorgu kullanmam gerektiğini biliyorum. Bunun için sahip olduğum sınırlı bilgiye dayanarak denedim.
SELECT app_id, transaction_id, mobile_no,
(CASE node_id WHEN 1 THEN entered_value ELSE '' END) AS user_input1,
(CASE node_id WHEN 2 THEN entered_value ELSE '' END) AS user_input2,
(CASE node_id WHEN 3 THEN entered_value ELSE '' END) AS user_input3,
(CASE node_id WHEN 4 THEN entered_value ELSE '' END) AS user_input4,
(CASE node_id WHEN 5 THEN entered_value ELSE '' END) AS user_input5
FROM trn_user_log
GROUP BY app_id, transaction_id, mobile_no, node_id
Ve aşağıda ekran var bu sorguya dayalı: Aşağıdaki benim sorgu
app_id transaction_id mobile_no user_input1 user_input2 user_input3 user_input4 user_input5
100 111 9999999999 2
100 111 9999999999 1
100 111 9999999999 4
100 111 9999999999 3
100 111 9999999999 2
100 222 8888888888 3
100 222 8888888888 1
100 222 8888888888 2
100 222 8888888888 1
100 222 8888888888 4
kimse ben kayıtlara ulaşmak benim sorguya yapmak için gereken uygun değişikliklerle bana yardımcı olabilir tek bir satırda ve yukarıdaki gibi birden fazla satırda değil.
Soru 2: Ayrıca, belirli bir alanın değerini, sütunun ADI olarak almanın bir yolu var. Yukarıda gördüğünüz gibi, başlık olarak user_input1
, user_input2
, var. Bunun yerine, değerlerin customer_attribute
sütunlarının üstbilgisi olarak olmasını istiyorum.
NAME_CONST(name,value)
kontrol Bunun için
:
SELECT app_id, transaction_id, mobile_no,
NAME_CONST(customer_attribute, (CASE node_id WHEN 1 THEN entered_value ELSE '' END))
FROM trn_user_log
Ama bu hatayı gerekli
Error Code : 1210 Incorrect arguments to NAME_CONST
Yardım verir.
adam! aklımı okuyorsun ... tam olarak istediğim şeydi ve ben yapıyordum .. Aynısını yapmak için saklanmış bir proc yazıyordum. Çok teşekkürler!!! – DarkKnightFan
@Gaurav sorun değil, ikinci sorunuzu tam olarak anlamadım. – Taryn
evet, bu çok zor .. ve bir SQL'de bile yazabileceğinden şüpheliyim. Bir sütunun değerini "customer_attr" ifadesinin "user_input" yerine üstbilgi olarak gösterilmesini istiyorum. Örneğin, 'Q1', 'user_input1' yerine görüntülenmelidir. Bu kodu java kodunda üstbilgi sütunlarını ayrı ayrı alarak ve aynı şekilde görüntüleyerek halledebileceğimi biliyorum. Ama sadece böyle bir şeyin mümkün olup olmadığını merak ediyorum. Her neyse yardımlarınız için teşekkürler. – DarkKnightFan