У меня есть хранимая процедура, которая заполняет таблицу в моем средстве просмотра отчетов, которая выглядит следующим образом:
╔════════╦═══════════╗
║ SALES ║ PRODUCTS ║
╠════════╬═══════════╣
║ sale 1 ║ Product A ║
║ ║ Product B ║
║ ║ Product C ║
╠════════╬═══════════╣
║ sale 2 ║ Product D ║
║ ║ Product A ║
║ ║ Product F ║
╠════════╬═══════════╣
║ sale 3 ║ Product B ║
║ ║ Product G ║
║ ║ Product C ║
╠════════╬═══════════╣
║ sale 4 ║ Product A ║
╚════════╩═══════════╝
Мне нужно отфильтровать продажи, я хочу показать только продажи, у которых есть c продукт, например: если я хочу видеть только продажи, которые имеют Product A
, это должен был бы быть следующий результат:
╔════════╦═══════════╗
║ SALES ║ PRODUCTS ║
╠════════╬═══════════╣
║ sale 1 ║ Product A ║
║ ║ Product B ║
║ ║ Product C ║
╠════════╬═══════════╣
║ sale 2 ║ Product D ║
║ ║ Product A ║
║ ║ Product F ║
╠════════╬═══════════╣
║ sale 4 ║ Product A ║
╚════════╩═══════════╝
Но фильтр, который я имею, возвращает это мне:
╔════════╦═══════════╗
║ SALES ║ PRODUCTS ║
╠════════╬═══════════╣
║ sale 4 ║ Product A ║
╚════════╩═══════════╝
это мой фильтр:
SELECT cabecalho.ID, cabecalho.NaturezaOperacao, cabecalho.DataEmissao, cabecalho.ValorTotal, NFI.ID_NF, PS.ProductName, NFI.Quantidade, NFI.ValorUnitario
FROM(
SELECT NF.ID, NF.NaturezaOperacao, NF.DataEmissao, NF.ValorTotal
FROM NotaFiscal NF INNER JOIN
Venda V
ON NF.ID_Venda = V.ID INNER JOIN
Usuario U
ON V.ID_UsuarioComissao1 = U.ID
WHERE
((U.Descricao = @usuario) OR (@usuario IS NULL)) AND
(NF.DataEmissao >= @dataEmissao AND NF.DataSaida <= @dataSaida)) cabecalho
======== ANOTHER JOINS =========
WHERE
((U.Descricao = @usuario) OR (@usuario IS NULL)) AND
(NF.DataEmissao >= @dataEmissao AND NF.DataSaida <= @dataSaida) AND
((PS.ProductName LIKE '%' + @product + '%') OR (@product IS NULL))
ORDER BY
CASE WHEN @ordem = 'value' THEN cabecalho.ValorTotal END DESC,
CASE WHEN @ordem = 'date' THEN cabecalho.DataEmissao END DESC
Как мне это исправить ??