Select um pouco complicado (para eu)

20/11/2015

0

Não consegui achar aqui no forum uma resposta para a minha dúvida !

Tenho as seguintes tabelas:


Tcompromisso
-----------------
id
data
id_responsavel



Tresponsavel
----------------
id
nome



Gostaria de realizar um select que retorne o seguinte:

nome_responsavel, total de compromissos atribuidos a ele, total de compromisso atribuídos a ela com a data de hoje

Parece que vou ter que usar dous counts... Não estou conseguindo


Agradeço muito a ajuda de vocês.
Ananias

Ananias

Responder

Post mais votado

20/11/2015

Tente algo parecido com isso...

select resp.Nome,
       (select count(1) from t_compromisso where t_responsavelID = resp.t_responsavelID) as TotalCompromisso,
       (select count(1) from t_compromisso where t_responsavelID = resp.t_responsavelID and datediff(dd,Data,getdate()) = 1) as TotalCompromisso
from T_responsavel

Marcos P

Marcos P
Responder

Mais Posts

20/11/2015

Jothaz

Sinceramente achei o post muito confuso. Veja se o exemplo abaixo ajuda a lhe dar uma luz.

CREATE TABLE #TCOMPROMISSO (ID INT, DATA DATETIME, ID_RESPONSAVEL VARCHAR(20)) 

CREATE TABLE #TRESPONSAVEL (ID INT, NOME VARCHAR(20)) 


INSERT INTO #TCOMPROMISSO (ID, DATA, ID_RESPONSAVEL) VALUES (1, GETDATE(), 1)
INSERT INTO #TCOMPROMISSO (ID, DATA, ID_RESPONSAVEL) VALUES (1, (GETDATE() - 5), 2)
INSERT INTO #TCOMPROMISSO (ID, DATA, ID_RESPONSAVEL) VALUES (1, (GETDATE() - 10), 3)
INSERT INTO #TCOMPROMISSO (ID, DATA, ID_RESPONSAVEL) VALUES (1, (GETDATE() - 10), 3)
INSERT INTO #TCOMPROMISSO (ID, DATA, ID_RESPONSAVEL) VALUES (1, (GETDATE() - 10), 3)
INSERT INTO #TCOMPROMISSO (ID, DATA, ID_RESPONSAVEL) VALUES (1, (GETDATE() - 2), 1)
INSERT INTO #TCOMPROMISSO (ID, DATA, ID_RESPONSAVEL) VALUES (1, (GETDATE() + 8), 2)
INSERT INTO #TCOMPROMISSO (ID, DATA, ID_RESPONSAVEL) VALUES (1, (GETDATE() + 3), 2)
INSERT INTO #TCOMPROMISSO (ID, DATA, ID_RESPONSAVEL) VALUES (1, (GETDATE() + 3), 2)

INSERT INTO #TRESPONSAVEL (ID, NOME) VALUES (1, 'DIANA')
INSERT INTO #TRESPONSAVEL (ID, NOME) VALUES (2, 'ATENAS')
INSERT INTO #TRESPONSAVEL (ID, NOME) VALUES (3, 'VÊNUS')


SELECT R.NOME,COUNT(C.ID_RESPONSAVEL) 
FROM #TCOMPROMISSO C
INNER JOIN #TRESPONSAVEL R ON R.ID = C.ID_RESPONSAVEL
GROUP BY R.NOME
ORDER BY R.NOME


SELECT R.NOME,CONVERT(VARCHAR, DATA, 103),COUNT(C.ID_RESPONSAVEL) 
FROM #TCOMPROMISSO C
INNER JOIN #TRESPONSAVEL R ON R.ID = C.ID_RESPONSAVEL
GROUP BY R.NOME,CONVERT(VARCHAR, DATA, 103)
ORDER BY R.NOME,CONVERT(VARCHAR, DATA, 103)


DROP TABLE  #TCOMPROMISSO 
DROP TABLE  #TRESPONSAVEL
Responder

20/11/2015

Ananias

Amigo, desculpe se foi confuso. Vou tentar explicar melhor ...

[img]http://arquivo.devmedia.com.br/forum/imagem/401183-20151120-153351.png[/img]

Simplificando, dado o conteúdo das tabelas

Selecione os nomes de cada responsável, seguido da quantidade total de compromissos de cada um e da quantidade total de compromissos de cada um, cuja data do compromisso seja igual ao dia atual.

nome : fulano de tal
total_compromisso : 1200
total_compromissos_hoje : 30

etc...



Grato.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar