Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何构建此SQL查询_Sql_Sql Server - Fatal编程技术网

如何构建此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

提供一些示例数据和表格式的预期输出这看起来是存储过程的一部分,因为它在示例代码中使用的某些列上具有
@
。如果是这样的话,您能完整地共享代码以便于查看和调试吗?