【发布时间】:2015-11-07 20:50:53
【问题描述】:
在下面的视图中,我不想在 where 条件中指定实际日期,而是希望 sql server 将 6 月和 5 月识别为最近一个月和(最近一个月-1),因为视图每月刷新一次,并且最近一个月和(最近一个月-1)也是如此。
PS:- 表格中最新报告月份为六月
SELECT (A.[First Name])
,A.[Last Name]
,A.[Report Month]
FROM (
(
SELECT DISTINCT [First Name]
,[Last Name]
,[Report Month]
,[Bill To Code]
,[Region]
,[Area]
FROM dbo.Data
WHERE (
[Report Month] BETWEEN '2015-06-01'
AND '2015-06-30'
AND [FTE Status] = 'Inactive'
)
) A INNER JOIN (
SELECT DISTINCT [First Name]
,[Last Name]
,[Report Month]
,[Bill To Code]
,[Region]
,[Area]
FROM dbo.Data
WHERE (
[Report Month] BETWEEN '2015-05-01'
AND '2015-05-31'
AND [FTE Status] = 'Active'
)
) B ON A.[First Name] = B.[First Name]
AND A.[Last Name] = B.[Last Name]
)
谢谢,刚刚学会了如何在 SO 中更好地格式化。感谢 Sean。从我的错误中吸取教训..:)
【问题讨论】:
-
您对哪些部分有问题?你真的没有问题。
-
Report_month 是您表中的一列吗?它不包含月份而是日期?而且数据不是最新的?那么最后一个月可能还没有出现在表格中?但是您仍然想从该表中获取上个月的数据吗?抱歉,这太混乱了,无法理解。
-
对不起各位混淆了,报告月份是我表中的一列。它是一个日期字段,是的,表中的最新数据是2015年6月。将来当表更新时,值可能不是最近的,因此我必须让 sql server 读取最近一个月
-
最后一个查询与此有什么关系?您必须意识到我们看不到您的屏幕,而我们唯一知道您想要做什么的就是您发布的内容......在这一点上并不多。帮助我们了解您想要做什么,因为我猜一旦我们了解它就很容易了。
-
select * from dbo.Data where ([Report Month] between '2015-05-01' and '2015-05-31' and [FTE Status]='Active')
标签: sql sql-server function date aggregate-functions