Retornar apenas uma linha no Sql Server porém que traga todos os campos preenchidos.
Tenho uma rotina que cria algumas linhas na minha tabela, essa tabela possui um campo chave "ID" e outras colunas que vou chamar de Coluna1, Coluna2, Coluna3 até Coluna10.
Na primeira linha eu tenho as colunas (Coluna1, Coluna10) preenchidas e as demais NULL, já na segunda linha tenho por exemplo as colunas (Coluna4 e Coluna6) com valores.
Então preciso retornar apenas uma linha que contenha as colunas preenchidas, Como fazer um select nessa tabela?
Na primeira linha eu tenho as colunas (Coluna1, Coluna10) preenchidas e as demais NULL, já na segunda linha tenho por exemplo as colunas (Coluna4 e Coluna6) com valores.
Então preciso retornar apenas uma linha que contenha as colunas preenchidas, Como fazer um select nessa tabela?
Bruno
Curtidas 0
Melhor post
Geovane Junior
12/04/2020
Tenho uma rotina que cria algumas linhas na minha tabela, essa tabela possui um campo chave "ID" e outras colunas que vou chamar de Coluna1, Coluna2, Coluna3 até Coluna10.
Na primeira linha eu tenho as colunas (Coluna1, Coluna10) preenchidas e as demais NULL, já na segunda linha tenho por exemplo as colunas (Coluna4 e Coluna6) com valores.
Então preciso retornar apenas uma linha que contenha as colunas preenchidas, Como fazer um select nessa tabela?
Na primeira linha eu tenho as colunas (Coluna1, Coluna10) preenchidas e as demais NULL, já na segunda linha tenho por exemplo as colunas (Coluna4 e Coluna6) com valores.
Então preciso retornar apenas uma linha que contenha as colunas preenchidas, Como fazer um select nessa tabela?
Fala Bruno beleza? Man não sei se entendi bem, mas acho que você colocar os dados nas colunas separadamente, mas precisa que esses dados venham todos juntos na mesma coluna.
Se for isso mesmo e esse ID que você coloca seja digamos o que agrupa tudo o que você colocou você pode usar essa query quero que o emerson te passou colocando um where ID = "valor" no final dessa forma vai trazer apenas uma linha com os dados preenchidos como você precisa.
SELECT
ID, max(Variable1) CPO1, max(Variable2) CPO2, max(Variable3) CPO3, max(Variable4) CPO4, max(Variable5) CPO5, max(Variable6) CPO6, max(Variable7) CPO7, max(Variable8) CPO8, max(Variable9) CPO9, max(Variable10) CPO10
FROM
TABELA_DADOS
WHERE
(DateTime BETWEEN '2020-04-11 00:44:01' AND '2020-04-11 23:59:59')
AND
ID = <valordoID>
GROUP BY ID
Agora se esse ID não for o agregador de informações você vai precisar alterar essa rotina para que ela insira alguma coluna que agregue esses dados para você de alguma forma.
GOSTEI 1
Mais Respostas
Emerson Nascimento
12/04/2020
pra deixar claro: você precisa trazer a linha onde todos os campos estão preenchidos?
ou você precisa trazer um linha, mesclando os campos, de modo que apresente uma linha com todos os campos preenchidos?
no primeiro caso:
para o segundo caso:
não entendi porque citou o campo ID
ou você precisa trazer um linha, mesclando os campos, de modo que apresente uma linha com todos os campos preenchidos?
no primeiro caso:
SELECT * FROM TABELA WHERE (NOT CAMPO1 IS NULL) AND (NOT CAMPO2 IS NULL) AND (NOT CAMPO3 IS NULL) ... ATÉ O CAMPO10
para o segundo caso:
SELECT max(CAMPO1) CPO1, max(CAMPO2) CPO2, max(CAMPO3) CPO3, ATÉ O CAMPO10 FROM TABELA
não entendi porque citou o campo ID
GOSTEI 0
Bruno
12/04/2020
pra deixar claro: você precisa trazer a linha onde todos os campos estão preenchidos?
ou você precisa trazer um linha, mesclando os campos, de modo que apresente uma linha com todos os campos preenchidos?
no primeiro caso:
para o segundo caso:
não entendi porque citou o campo ID
ou você precisa trazer um linha, mesclando os campos, de modo que apresente uma linha com todos os campos preenchidos?
no primeiro caso:
SELECT * FROM TABELA WHERE (NOT CAMPO1 IS NULL) AND (NOT CAMPO2 IS NULL) AND (NOT CAMPO3 IS NULL) ... ATÉ O CAMPO10
para o segundo caso:
SELECT max(CAMPO1) CPO1, max(CAMPO2) CPO2, max(CAMPO3) CPO3, ATÉ O CAMPO10 FROM TABELA
não entendi porque citou o campo ID
Emerson, primeiramente muito obrigado pelo retorno, seria o segundo caso mesmo, o único ponto é que essa query está retornando apenas uma linha, eu preciso que retorne uma linha para cada ID = exemplo meu campo ID pode ter duas ou mais linhas ai nesse caso preciso trazer todos os ID's. Como minha busca é por data, preciso que naquele dia traga todos os ID's e seus respsctivos Max(Campo)
GOSTEI 0
Bruno
12/04/2020
Emerson, primeiramente muito obrigado pelo retorno, seria o segundo caso mesmo, o único ponto é que essa query está retornando apenas uma linha, eu preciso que retorne uma linha para cada ID = exemplo meu campo ID pode ter duas ou mais linhas ai nesse caso preciso trazer todos os ID's. Como minha busca é por data, preciso que naquele dia traga todos os ID's e seus respsctivos Max(Campo)
Meu select
SELECT max(Variable1) CPO1, max(Variable2) CPO2, max(Variable3) CPO3, max(Variable4) CPO4, max(Variable5) CPO5, max(Variable6) CPO6, max(Variable7) CPO7, max(Variable8) CPO8, max(Variable9) CPO9, max(Variable10) CPO10 FROM TABELA_DADOS
WHERE (DateTime BETWEEN '2020-04-11 00:44:01' AND '2020-04-11 23:59:59')
Esse select retorna apenas 1 linha, com o max(campo) de toda a tabela.
Meu select
SELECT max(Variable1) CPO1, max(Variable2) CPO2, max(Variable3) CPO3, max(Variable4) CPO4, max(Variable5) CPO5, max(Variable6) CPO6, max(Variable7) CPO7, max(Variable8) CPO8, max(Variable9) CPO9, max(Variable10) CPO10 FROM TABELA_DADOS
WHERE (DateTime BETWEEN '2020-04-11 00:44:01' AND '2020-04-11 23:59:59')
Esse select retorna apenas 1 linha, com o max(campo) de toda a tabela.
GOSTEI 0
Emerson Nascimento
12/04/2020
ah, sim.
então acredito que baste:
então acredito que baste:
SELECT ID, max(CAMPO1) CPO1, max(CAMPO2) CPO2, max(CAMPO3) CPO3, ATÉ O CAMPO10 FROM TABELA GROUP BY ID
GOSTEI 1
Emerson Nascimento
12/04/2020
SELECT ID, max(Variable1) CPO01, max(Variable2) CPO02, max(Variable3) CPO03, max(Variable4) CPO04, max(Variable5) CPO05, max(Variable6) CPO06, max(Variable7) CPO07, max(Variable8) CPO08, max(Variable9) CPO09, max(Variable10) CPO10 FROM TABELA_DADOS WHERE (DateTime BETWEEN '2020-04-11 00:44:01' AND '2020-04-11 23:59:59') GROUP BY ID
GOSTEI 1
Bruno
12/04/2020
Muito obrigado pessoal utilizei o exemplo do Emerson e funcionou corretamente como esperado. Muito Obrigado a todos.
GOSTEI 0