如何查询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
答
您的IF EXISTS()
正在寻找CoverageMonth列有两个不同值的行,这是不可能的。
你反而需要做两个IF EXISTS()
,因为你想知道FirstMonth是否存在并存在SecondMonth。
因此,在伪代码:
IF EXISTS(SELECT using @FirstMonth)
AND EXISTS(SELECT using @SecondMonth)
BEGIN ...
请*不*不适用于您的问题 –
当然,我会记住下一次使用标签。我的错误被添加了。 – piyush