sql - 如何在 WHERE 子句中选择什么 CONTAINS 而不是选择 ONLY WHAT IS EQUAL?
问题描述
我有一个存储过程,它在我的 reportviewer 中填充一个表格,如下所示:
╔════════╦═══════════╗
║ 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 ║
╚════════╩═══════════╝
我需要过滤销售,我只想显示具有特定产品的销售,例如:如果我只想查看具有 的销售,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
我如何解决它?
解决方案
推荐阅读
- arrays - 字符串到二维数组
- scala - scala如何调用具有正确签名的重载方法
- session - 在功能规范中登录和注销后访问会话
- javascript - 渲染 contenteditable div
- java - 如何根据json中的特定键将接收器从一个数据流添加到不同的路径?
- php - 在 PHP 和 Python 脚本之间传递数据
- android - Firebase ML Kit Face Contours:裁剪面部特征
- css - 如何使用 css flex 为桌面制作 4 列,为移动设备制作 2 列?
- security - 提升流程内部流程的各种技巧
- java - Android 9 上的 Chromecast 音量控制器