如何构建此SQL查询
我有这个表,它包括如何构建此SQL查询,sql,sql-server,Sql,Sql Server,我有这个表,它包括Id,BIN,SerialNumber和年份 我想检查其他BIN上是否已经有SerialNumber: 我使用的查询是: SELECT * FROM tblFSIC WHERE ControlNumber = @ControlNumber AND NOT BIN = @BIN; 但是我还需要检查银行标识代码和年份是否重复,我的查询是: SELECT * FROM tblFSIC WHERE BIN = @BIN AND Year = @Year; 首先考虑使用:
Id
,BIN
,SerialNumber
和年份
我想检查其他BIN
上是否已经有SerialNumber
:
我使用的查询是:
SELECT *
FROM tblFSIC
WHERE ControlNumber = @ControlNumber AND NOT BIN = @BIN;
但是我还需要检查银行标识代码
和年份
是否重复,我的查询是:
SELECT *
FROM tblFSIC
WHERE BIN = @BIN AND Year = @Year;
首先考虑使用:
SELECT *
FROM tblFSIC
WHERE (ControlNumber = @ControlNumber AND NOT BIN = @BIN)
OR (BIN = @BIN AND Year = @Year);
但它只会返回任何具有不同的BIN
的控制编号
我不知道如何在查询中满足两个不同的条件我想您需要聚合:
SELECT SerialNumber
FROM tblFSIC
GROUP BY SerialNumber
HAVING SUM(CASE WHEN ControlNumber = @ControlNumber AND NOT BIN = @BIN THEN 1 ELSE 0 END) > 0 AND
SUM(CASE WHEN BIN = @BIN AND Year = @Yea THEN 1 ELSE 0 END) > 0;
这将查找满足这两个条件的序列号。如果您希望序列号在这两种情况下都失败,请在have中使用
=0
。提供一些示例数据和表格式的预期输出这看起来是存储过程的一部分,因为它在示例代码中使用的某些列上具有@
。如果是这样的话,您能完整地共享代码以便于查看和调试吗?