如何查询SQL Server中同一列中的2个强制匹配记录

问题描述:

如何验证SQL Server中同一列中的2个强制记录?如何查询SQL Server中同一列中的2个强制匹配记录

@Declare @GivenMonth datetime='2017-03-01' 

我宣布一个日期,需要检查表中是否包含2先行记录与PaymentStatus = 'Y'Month = @GivenMonth

id | Month  | PayamentStatus 
---+-------------+---------------- 
1 | 2017-01-01 | Y 
2 | 2017-02-01 | Y 
3 | 2017-03-01 | Y 
4 | 2017-04-01 | Y 

我已经使用这个代码,但它不工作:

SET @FirstPrecCovMonth = DATEADD(month, -1, @GivenMonth) 
SET @SecondPrecCovMonth = DATEADD(month, -2, @GivenMonth) 

IF EXISTS (SELECT * FROM PaymentRecord 
      WHERE PaymentStatus = 'Y' 
      AND (CoverageMonth = @FirstPrecCovMonth 
      AND CoverageMonth = @SecondPrecCovMonth)) 
BEGIN 
    ////////////////////////////// 
END 
+0

请*不*不适用于您的问题 –

+0

当然,我会记住下一次使用标签。我的错误被添加了。 – piyush

您的IF EXISTS()正在寻找CoverageMonth列有两个不同值的行,这是不可能的。

你反而需要做两个IF EXISTS(),因为你想知道FirstMonth是否存在并存在SecondMonth。

因此,在伪代码:

IF EXISTS(SELECT using @FirstMonth) 
AND EXISTS(SELECT using @SecondMonth) 
    BEGIN ...