CONSULTA POR MES EM SQL
Boa noite pessoal, estou com uma dificuldade em fazer um sql, e gostaria de uma ajudinha se for possivel. Tenho as seguintes tabelas:
TbFilme (pkCodfime, Titulo)
TbLocacao (pkCodLoc, DataLoc,FkCodCli)
TbCliente (PkCodCli, NomeClie, Endcli)
TBRelFimeLoc (PkCodRel, FKCodFilme,FKCodLoc)
Preciso mostrar o SQL que retorna 4 colunas contendo o nome dos clientes(1º coluna) e a quantidade de locações por eles realizadas nos meses 08(2º coluna), 09(3º coluna) e 10(4º coluna).
Agradeceria Ajuda,
professor.eliseu@gmail.com
TbFilme (pkCodfime, Titulo)
TbLocacao (pkCodLoc, DataLoc,FkCodCli)
TbCliente (PkCodCli, NomeClie, Endcli)
TBRelFimeLoc (PkCodRel, FKCodFilme,FKCodLoc)
Preciso mostrar o SQL que retorna 4 colunas contendo o nome dos clientes(1º coluna) e a quantidade de locações por eles realizadas nos meses 08(2º coluna), 09(3º coluna) e 10(4º coluna).
Agradeceria Ajuda,
professor.eliseu@gmail.com
Deve ficar mais ou menos assim.
SELECT
NomeCli,
(SELECT CONT(*) FROM TbLocacao WHERE FKCodCli = PkCodCli AND RIGHT(CONVERT(VARCHAR(10), DataLoc, 103), 7) = [ô]08/2013[ô] ) as Mes08,
(SELECT CONT(*) FROM TbLocacao WHERE FKCodCli = PkCodCli AND RIGHT(CONVERT(VARCHAR(10), DataLoc, 103), 7) = [ô]09/2013[ô] ) as Mes09,
(SELECT CONT(*) FROM TbLocacao WHERE FKCodCli = PkCodCli AND RIGHT(CONVERT(VARCHAR(10), DataLoc, 103), 7) = [ô]10/2013[ô] ) as Mes10
FROM
TbCliente
SELECT
NomeCli,
(SELECT CONT(*) FROM TbLocacao WHERE FKCodCli = PkCodCli AND RIGHT(CONVERT(VARCHAR(10), DataLoc, 103), 7) = [ô]08/2013[ô] ) as Mes08,
(SELECT CONT(*) FROM TbLocacao WHERE FKCodCli = PkCodCli AND RIGHT(CONVERT(VARCHAR(10), DataLoc, 103), 7) = [ô]09/2013[ô] ) as Mes09,
(SELECT CONT(*) FROM TbLocacao WHERE FKCodCli = PkCodCli AND RIGHT(CONVERT(VARCHAR(10), DataLoc, 103), 7) = [ô]10/2013[ô] ) as Mes10
FROM
TbCliente
Obrigado..
Deu certinho...
E tb fiz de outra maneira...
SELECT TbCliente.NomeClie,
SUM(CASE WHEN EXTRACT(MONTH FROM TbLocacao.DataLoc) = 08 THEN 1 ELSE 0 END) AS [Ô]Mes 08[Ô],
SUM(CASE WHEN EXTRACT(MONTH FROM TbLocacaoDataLoc) = 09 THEN 1 ELSE 0 END) AS [Ô]Mes 09[Ô],
SUM(CASE WHEN EXTRACT(MONTH FROM TbLocacao.DataLoc) = 10 THEN 1 ELSE 0 END) AS [Ô]Mes 10[Ô]
FROM TbCliente JOIN TbLocacao ON (TbCliente.PkCodCli = TbLocacao.FkCodCli)
WHERE EXTRACT(YEAR FROM TbLocacao.DataLoc) = 2012
GROUP BY TbCliente.NomeClie;
Abraço
Deu certinho...
E tb fiz de outra maneira...
SELECT TbCliente.NomeClie,
SUM(CASE WHEN EXTRACT(MONTH FROM TbLocacao.DataLoc) = 08 THEN 1 ELSE 0 END) AS [Ô]Mes 08[Ô],
SUM(CASE WHEN EXTRACT(MONTH FROM TbLocacaoDataLoc) = 09 THEN 1 ELSE 0 END) AS [Ô]Mes 09[Ô],
SUM(CASE WHEN EXTRACT(MONTH FROM TbLocacao.DataLoc) = 10 THEN 1 ELSE 0 END) AS [Ô]Mes 10[Ô]
FROM TbCliente JOIN TbLocacao ON (TbCliente.PkCodCli = TbLocacao.FkCodCli)
WHERE EXTRACT(YEAR FROM TbLocacao.DataLoc) = 2012
GROUP BY TbCliente.NomeClie;
Abraço
Tópico encerrado , respostas não são mais permitidas