所以我有一个表,其中包含以下 select 语句中列出的一些列。
SELECT [AccountName],
[AccountNumber],
[Tenor],
[Currency],
[TotalCredit],
[TotalDebit],
[CreditCount],
[DebitCount],
[AccountBalance],
[StatementStartDate],
[StatementEndDate]
FROM [TAF.EligibilityService].[dbo].[AccountStatements]
Run Code Online (Sandbox Code Playgroud)
我想使用StatementStartDate和StatementEndDate选择 6 个月前和今天之间存在的记录。
例如,如果开始日期是 1 年前,只要结束日期还在 6 个月前,就应该返回记录。
提前致谢。
这将一个已知值 , 包装GETDATE()
在一个函数中,该函数只需要一次计算,而不是将列包装在一个函数中,这将需要对每一行的计算进行评估。
SELECT [AccountName],
[AccountNumber],
[Tenor],
[Currency],
[TotalCredit],
[TotalDebit],
[CreditCount],
[DebitCount],
[AccountBalance],
[StatementStartDate],
[StatementEndDate]
FROM [TAF.EligibilityService].[dbo].[AccountStatements]
WHERE StatementStartDate >= dateadd(month, -6, getdate())
OR StatementEndDate>= dateadd(month, -6, getdate());
Run Code Online (Sandbox Code Playgroud)
根据索引、数据大小和性能需求,将其拆分OR
为两个UNION
语句可能是下一步。就像是:
SELECT [AccountName],
[AccountNumber],
[Tenor],
[Currency],
[TotalCredit],
[TotalDebit],
[CreditCount],
[DebitCount],
[AccountBalance],
[StatementStartDate],
[StatementEndDate]
FROM [TAF.EligibilityService].[dbo].[AccountStatements]
WHERE StatementStartDate >= dateadd(month, -6, getdate())
UNION ALL
SELECT [AccountName],
[AccountNumber],
[Tenor],
[Currency],
[TotalCredit],
[TotalDebit],
[CreditCount],
[DebitCount],
[AccountBalance],
[StatementStartDate],
[StatementEndDate]
FROM [TAF.EligibilityService].[dbo].[AccountStatements]
WHERE StatementEndDate>= dateadd(month, -6, getdate());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
104 次 |
最近记录: |