Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

UTILIZANDO WHERE COM OR E AND

Pessoal, boa noite, podem me ajudar? Estou tentando fazer uma consulta com alguns joins no SQL Server e preciso filtrar produtos que contenham determinadas palavras no nome mas também preciso que retornem registros apenas do ano de 2022. Como estou utilizando OR, na clausula where, ele está me retornando linhas com o nome do produto, mas que não são do ano de 2022. Alguma dica de como posso contornar isso? Trazer todos os "OR", porém só do ano 2022

SELECT a.ID ,a.BirthDate ,a.Sex ,a.ZipCode ,a.City ,a.State ,a.Receive_Email AS Optin_Email ,a.Receive_Sms AS Optin_Sms ,a.Receive_AppMSG AS Optin_WPP ,a.DtRegister AS Data_cadastro ,b.CIE AS COD_Produto ,b.Name AS Produto ,b.Unity AS Und_medida ,c.Name as LOJA ,c.CNPJ ,d.CupomFiscal ,d.Value AS Valor_Cupom ,DATEPART(DD, d.DateCUPOM) AS Dia_Cupom ,DATEPART(MM, d.DateCUPOM) AS Mes_Cupom ,DATEPART(YYYY, d.DateCUPOM) AS Ano_Cupom ,e.Amount AS Quantidade ,e.ValueUnit AS Valor_Unitario ,e.ValueDescont AS Valor_Desconto ,e.ValueTotal AS Valor_Total_Produto ,e.ValueTotalDescont AS Valor_Total_Desconto FROM CupomItem E

INNER JOIN Cupom D ON E.IdCupom = D.Id INNER JOIN Product B ON E.IdProduct = B.Id INNER JOIN Store C ON D.Id_Store = C.Id INNER JOIN Participant A ON D.Id_Participant = A.ID

WHERE (DATEPART(YEAR, d.DateCUPOM) = 2022) OR (b.Name LIKE '%Café%') OR (b.Name LIKE '%Cafe%') OR (b.Name LIKE '%Capuccino%')

GROUP BY a.ID ,a.BirthDate ,a.Sex ,a.ZipCode ,a.City ,a.State ,a.Receive_Email ,a.Receive_Sms ,a.Receive_AppMSG ,a.DtRegister ,b.CIE ,b.Name ,b.Unity ,c.Name ,c.CNPJ ,d.CupomFiscal ,d.Value ,DATEPART(DD, d.DateCUPOM) ,DATEPART(MM, d.DateCUPOM) ,DATEPART(YYYY, d.DateCUPOM) ,e.Amount ,e.ValueUnit ,e.ValueDescont ,e.ValueTotal ,e.ValueTotalDescont

1 resposta
solução!

Fala Valter, tudo certo?

Ele traz o resultado com outros anos porque suas condições são todas OR. Para resolver basta colocar um AND após o ano e isolar as condições OR com parênteses. O resultado será ano = 2022 e nome contendo Café, Cafe ou Capuccino:

WHERE DATEPART(YEAR, d.DateCUPOM) = 2022 AND (b.Name LIKE '%Café%' OR b.Name LIKE '%Cafe%' OR b.Name LIKE '%Capuccino%')

Abraço

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software