AJUDA COM QUERY SQL

 Tópico anterior Próximo tópico Novo tópico

AJUDA COM QUERY SQL

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#480219 - 17/03/2018 13:21:16

ALEVALE
JUNDIAI
Cadast. em:Março/2012


Pessoal tenho essa query, mas não consigo fazer a soma dos campos, no total.
O total deveria ser a soma dos campo D30,D60,D90,D120,Never_Expires : (

D30    D60    D90    D120    Never_Expires    total
664    329    0    839                        0                    869

Query:
SELECT D30 = count(CASE WHEN C.AD_Object_Password_Expire_Days >= '30' THEN C.Site END), D60 = count(CASE WHEN C.AD_Object_Password_Expire_Days >= '60' THEN C.Site END),D90 = count(CASE WHEN C.AD_Object_Password_Expire_Days >= '90' THEN C.Site END), D120 = count(CASE WHEN C.AD_Object_Password_Expire_Days >= '120' THEN C.Site END), Never_Expires = count(CASE WHEN C.LifeCycle_Status = 'Never Used' THEN C.Site END), total = count(C.Status) FROM users_atrib AS C

---------------------------------------------------------------
"Já está provado por A+B que A+B num prova nada"
---------------------------------------------------------------

#480220 - 17/03/2018 13:44:12

ALEVALE
JUNDIAI
Cadast. em:Março/2012


Apenas uma correção:
SUM(CASE WHEN c.AD_Object_Password_Expire_Days >= '30' then c.AD_Object_Password_Expire_Days else 0 end)

Precisaria somar os demais campos mas não consegui, na realidade estava tentando somar direto 'D30' + 'D60' etc sem fazer outro case

---------------------------------------------------------------
"Já está provado por A+B que A+B num prova nada"
---------------------------------------------------------------

#480224 - 17/03/2018 17:07:19

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Como nos ajudar a te ajudar, no caso de uma query:
Mostre a estrutura da(s) sua(s) tabela(s). De preferência com um exemplo de dados. Isso você fez. Em seguida, diga o que você quer fazer com os dados, só assim podemos ter uma noção do que você quer e partimos daí para dar uma solução. Mostrar código não ajuda em quase nada, pelo menos pra mim. Na maioria das vezes simplesmente ignoro.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#480231 - 17/03/2018 20:03:01

JABA
CABO FRIO
Cadast. em:Agosto/2005


Para somar, utilize o SUM em vez do COUNT.

www.w3schools.com/sql/sql_count_avg_sum.asp

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#480236 - 18/03/2018 14:33:13

ALEVALE
JUNDIAI
Cadast. em:Março/2012


Citação:
:
Como nos ajudar a te ajudar, no caso de uma query:
Mostre a estrutura da(s) sua(s) tabela(s). De preferência com um exemplo de dados. Isso você fez. Em seguida, diga o que você quer fazer com os dados, só assim podemos ter uma noção do que você quer e partimos daí para dar uma solução. Mostrar código não ajuda em quase nada, pelo menos pra mim. Na maioria das vezes simplesmente ignoro.


Basicamente minha tabela possui 2 campos:
LifeCycle_Status                                    nvarchar(255)
AD_Object_Password_Expire_Days    int

LifeCycle_Status = Armazena o status da conta do AD.
AD_Object_Password_Expire_Days    = Armazena a quantidade de dias que o a senha do usuário irá expirar.

Posteriormente, vou agrupar na query as contas que fizeram login ou que irão vencer em 30,60,90,120 dai a coluna total irá somar todos esses valores.

D30    D60    D90    D120    Never_Expires    total
664    329    0    839                        0                    869

A query abaixo está funcionando só não consigo fazer a soma dos campos.
Query:
SELECT D30 = count(CASE WHEN C.AD_Object_Password_Expire_Days >= '30' THEN C.Site END), D60 = count(CASE WHEN C.AD_Object_Password_Expire_Days >= '60' THEN C.Site END),D90 = count(CASE WHEN C.AD_Object_Password_Expire_Days >= '90' THEN C.Site END), D120 = count(CASE WHEN C.AD_Object_Password_Expire_Days >= '120' THEN C.Site END), Never_Expires = count(CASE WHEN C.LifeCycle_Status = 'Never Used' THEN C.Site END), total = count(C.Status) FROM users_atrib AS C

Pensei em fazer algo assim no total:
SUM(CASE WHEN c.AD_Object_Password_Expire_Days >= '30' then c.AD_Object_Password_Expire_Days else 0 end)
e depois ir somando os campos mas não funcionou, queria ver se consigo somar os campos de uma forma mais fácil nesse caso (D30,D60,D90,D120,Never_Exires)

---------------------------------------------------------------
"Já está provado por A+B que A+B num prova nada"
---------------------------------------------------------------

#480269 - 20/03/2018 07:57:32

ALEVALE
JUNDIAI
Cadast. em:Março/2012


Alguém ?

---------------------------------------------------------------
"Já está provado por A+B que A+B num prova nada"
---------------------------------------------------------------

#480329 - 21/03/2018 16:21:02

JABA
CABO FRIO
Cadast. em:Agosto/2005


Experimente colocar o SUM no lugar de cada COUNT

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



Resposta escolhida #480356 - 22/03/2018 15:00:38

RXGOMES
VALINHOS
Cadast. em:Dezembro/2003


Tenta assim

select, D30, D60, D90, D120, D30 + D60 + D90 + D120 as 'total' from
(
SELECT D30 = count(CASE WHEN C.AD_Object_Password_Expire_Days >= '30' THEN C.Site END), D60 = count(CASE WHEN C.AD_Object_Password_Expire_Days >= '60' THEN C.Site END),D90 = count(CASE WHEN C.AD_Object_Password_Expire_Days >= '90' THEN C.Site END), D120 = count(CASE WHEN C.AD_Object_Password_Expire_Days >= '120' THEN C.Site END), Never_Expires = count(CASE WHEN C.LifeCycle_Status = 'Never Used' THEN C.Site END) FROM users_atrib AS C) t



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por ALEVALE em 28/03/2018 12:16:40