Retornar apenas uma linha no Sql Server porém que traga todos os campos preenchidos.
12/04/2020
0
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
Post mais votado
12/04/2020
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.
Geovane Junior
Mais Posts
12/04/2020
Emerson Nascimento
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
12/04/2020
Bruno
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)
12/04/2020
Bruno
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.
12/04/2020
Emerson Nascimento
então acredito que baste:
SELECT ID, max(CAMPO1) CPO1, max(CAMPO2) CPO2, max(CAMPO3) CPO3, ATÉ O CAMPO10 FROM TABELA GROUP BY ID
12/04/2020
Emerson Nascimento
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
12/04/2020
Bruno
Clique aqui para fazer login e interagir na Comunidade :)