SQL birkaç alanlardan Özet sorgusu

oy
1

Veri tablosu yapısı şöyledir:
id1, kimlik2, id3, ID4, ... (diğer bazı alanlar).
Bazı kimlik değeri her sütunda kullanılan kaç kez öğrenmek için özet sorgusu oluşturmak istiyorum.

Veri
1,2,3,4,2008
2,3,5,1,2008
1,3,2,5,2007
1,2,3,6,2007
3,1,2,5,2007

1 değeri, sonuç olmalıdır
1,0,0,1,2008
2,1,0,0,2007

(MySQL) bir sorgu ile bunu gerçekleştirmek için nasıl.

Oluştur 09/12/2008 saat 20:32
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
1

Bu (en iyi çözüm gibi görünüyor Wiki ):

select years,
sum(1*(1-abs(sign(id1-56)))) as id1,
sum(1*(1-abs(sign(id2-56)))) as id2,
sum(1*(1-abs(sign(id3-56)))) as id3,
sum(1*(1-abs(sign(id4-56)))) as id4,
from mytable
group by years
Cevap 09/12/2008 saat 21:22
kaynak kullanıcı

oy
1

karakteristik veya delta işlevini kullanın:

DECLARE @look_for AS int
SET @look_for = 1

SELECT SUM(CASE WHEN id1 = @look_for THEN 1 ELSE 0 END) AS id1_count
    ,SUM(CASE WHEN id2 = @look_for THEN 1 ELSE 0 END) AS id2_count
    ,SUM(CASE WHEN id3 = @look_for THEN 1 ELSE 0 END) AS id3_count
    ,SUM(CASE WHEN id4 = @look_for THEN 1 ELSE 0 END) AS id4_count
FROM tbl

masanızdaki ve ayrıca farklı kimlik değerlerine dayalı bu (ANSI değil, SQL Server da bir teknik kullanılarak PIVOT ve UNPIVOT) oluşturmak kodlamak için yolu vardır.

Cevap 09/12/2008 saat 20:43
kaynak kullanıcı

oy
0

seçmek

id1 olarak (t1 ID 1 = @param gelen sayısı (id1) seçin),

ID2 olarak (t2 ID2 = @param gelen sayısı (ID2) seçin)

Cevap 09/12/2008 saat 20:47
kaynak kullanıcı

oy
-1

X Aradığınız id değeri ise, bunu böyle bir şey yapmak istiyorum.

select (select count(*) where id1 = X) as countid1 ... etc
Cevap 09/12/2008 saat 20:43
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more