consulta Resumo de vários campos em SQL

votos
1

Estrutura de tabela de dados é:
id1, ID2, ID3, id4, ... (alguns outros campos).
Eu quero criar consulta de resumo para descobrir quantas vezes algum valor ID é usado em cada coluna.

Dados
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

Para o valor 1, o resultado deve ser
1,0,0,1,2008
2,1,0,0,2007

Como fazer isso com uma consulta (no MySQL).

Publicado 09/12/2008 em 20:32
fonte usuário
Em outras línguas...                            


4 respostas

votos
1

Esta parece ser a melhor solução (do 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
Respondeu 09/12/2008 em 21:22
fonte usuário

votos
1

Use uma função característica ou delta:

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

Há maneiras de codificar gerar este (também uma técnica que utiliza PIVOT e UNPIVOT no SQL Server que não é ANSI) com base na sua mesa e os valores de ID distintas também.

Respondeu 09/12/2008 em 20:43
fonte usuário

votos
0

selecionar

(Seleccionar contagem (ID1) a partir de t1 em que ID1 = @ param) como ID1,

(Seleccionar contagem (ID2) de t2 onde ID2 = @ param) como ID2

Respondeu 09/12/2008 em 20:47
fonte usuário

votos
-1

se X é o valor id você está procurando, você faria algo assim.

select (select count(*) where id1 = X) as countid1 ... etc
Respondeu 09/12/2008 em 20:43
fonte usuário

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