Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 537740
            [titulo] => Select um pouco complicado (para eu)
            [dataCadastro] => DateTime Object
                (
                    [date] => 2015-11-20 18:56:18
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 378439
            [status] => M
            [isExample] => 
            [NomeUsuario] => Marcos P
            [Apelido] => 
            [Foto] => 378439_20140801115452.png
            [Conteudo] => Tente algo parecido com isso...

[code]
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
[/code] ) )

Select um pouco complicado (para eu)

Ananias
   - 20 nov 2015

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.

Post mais votado

Marcos P
   - 20 nov 2015

Tente algo parecido com isso...

#Código

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

1
|
0

Jothaz
   - 20 nov 2015

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

#Código

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

Ananias
   - 20 nov 2015

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

Clique na imagem para abrir em uma nova janela

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.