如何根据生效日期获取当前记录?我应该使用子查询吗?除了MAX,我还有什么可以使用的吗?
我有这些表示例。
ResourceID is the ID number of the Resource.
OrganizationId is the current Organization or Department of the Resource.
Effective Date is the start date or the first day of the Resource in an Organization.
ResourceID OrganizationID EffectiveDate
VC1976 INTIN1HTHWYAMM 2009-12-23 00:00:00.000
VC1976 INTIN1LGAMMAMS 2011-07-01 00:00:00.000
VC1976 SMESM1HTOVEOVE 2012-07-01 00:00:00.000
VC1976 APCAP1HTOVEOVE 2012-07-09 10:17:56.000
ResourceID OrganizationID EffectiveDate
JV2579 VNMVN1HTHWYCMM 2009-07-01 00:00:00.000
JV2579 INTIN1HTHWYCMM 2011-07-02 00:00:00.000
JV2579 SMESM1HTOVEOVE 2012-07-01 00:00:00.000
ResourceID OrganizationID EffectiveDate
RJ1939 INTIN1HTOVEOVE 1995-01-30 00:00:00.000
RJ1939 INTIN1HTOVEOVE 2007-07-25 00:00:00.000
RJ1939 SMESM1HTOVEOVE 2012-07-01 00:00:00.000
ResourceID OrganizationID EffectiveDate
PJ8828 AREAR1HTHWYRHD 2012-04-01 00:00:00.000
PJ8828 SMESM1HTOVEOVE 2012-07-01 00:00:00.000
ResourceID OrganizationID EffectiveDate
RS1220 INTIN1HTHWYCMM 1981-01-06 00:00:00.000
RS1220 SMESM1HTOVEOVE 2012-07-01 00:00:00.000
我的目标是获取 当前 属于用户放入的OrganizationUnit的所有ResourceID 。例如,如果用户将
SMESM1HTOVEOVE 放入OrganizationID参数中,则它将拉出当前位于 SMESM1HTOVEOVE 下的所有
ReourceID 。到目前为止,我下面的MAX查询无法正常工作。
select OrganizationID, ResourceID, MAX(EffectiveDate) as EffectiveDate from ResourceOrganization
where OrganizationID = 'SMESM1HTOVEOVE'
group by OrganizationID, ResourceID, EffectiveDate
以下是我上面简短的MAX查询的结果。这是错误的,因为ResourceID VC1976 当前属于APCAP1HTOVEOVE,于2012-07-09
10:17:56.000生效。
OrganizationID ResourceID EffectiveDate
SMESM1HTOVEOVE JV2579 2012-07-01 00:00:00.000
SMESM1HTOVEOVE PJ8828 2012-07-01 00:00:00.000
SMESM1HTOVEOVE RJ1939 2012-07-01 00:00:00.000
SMESM1HTOVEOVE RS1220 2012-07-01 00:00:00.000
SMESM1HTOVEOVE VC1976 2012-07-01 00:00:00.000
有人可以帮忙提供他们的意见吗?因为我将在下面的存储过程中使用它。我还将包括我的proc供您自己细读。
谢谢!
create table #Resources
(
ResourceID nvarchar(30),
OrganizationID nvarchar(15),
EffectiveDate datetime,
TimeEntryDate datetime
)
if @ResourceID <> ''
begin
insert into #Resources (ResourceID,OrganizationID,EffectiveDate)
select ro.ResourceID, ro.OrganizationID, ro.EffectiveDate from ResourceOrganization ro,
(select ResourceID, MAX(EffectiveDate) as maxEffectivedate from dbo.ResourceOrganization
where ResourceID = @ResourceID
group by ResourceID) as maxresults
where ro.ResourceID = maxresults.ResourceID
and ro.EffectiveDate = maxresults.maxEffectivedate
end
else if @OrgUnit <> ''
begin
insert into #Resources (ResourceID,OrganizationID,EffectiveDate)
select ro.ResourceID, ro.OrganizationID, ro.EffectiveDate from ResourceOrganization ro,
(select ResourceID, MAX(EffectiveDate) as maxEffectivedate from dbo.ResourceOrganization
where OrganizationID like '' + @OrgUnit + '%'
group by ResourceID) as maxresults
where ro.ResourceID = maxresults.ResourceID
and ro.EffectiveDate = maxresults.maxEffectivedate
else if @ResourceID <> '' and @OrgUnit <> ''
begin
insert into #Resources (ResourceID,OrganizationID,EffectiveDate)
select ro.ResourceID, ro.OrganizationID, ro.EffectiveDate
from ResourceOrganization ro,
(select ResourceID, MAX(EffectiveDate) as maxEffectivedate from dbo.ResourceOrganization
where ResourceID = @ResourceID
group by ResourceID) as maxresults
where ro.ResourceID = maxresults.ResourceID
and ro.EffectiveDate = maxresults.maxEffectivedate
end
我想还有其他方法可以做到这一点,但我认为这可行:
DECLARE
@OrganizationID varchar(40)
SET @OrganizationID = 'SMESM1HTOVEOVE'
SELECT
ro.ResourceID,
ro.OrganizationID,
max(ro.EffectiveDate)
FROM
ResourceOrganization ro
WHERE
ro.OrganizationID = @OrganizationID
GROUP BY
ro.ResourceID,
ro.OrganizationID
HAVING
max(ro.EffectiveDate) = (
SELECT
max(EffectiveDate)
FROM
ResourceOrganization
WHERE
ResourceID = ro.ResourceID)
这是一个SQLFiddle。
编辑:实际上,这可能过于复杂。试试这个:
DECLARE
@OrganizationID varchar(40)
SET @OrganizationID = 'SMESM1HTOVEOVE'
SELECT
ro.ResourceID,
ro.OrganizationID,
ro.EffectiveDate
FROM
ResourceOrganization ro
WHERE
ro.OrganizationID = @OrganizationID
AND ro.EffectiveDate = (
SELECT
max(EffectiveDate)
FROM
ResourceOrganization
WHERE
ResourceID = ro.ResourceID)
本文向大家介绍Python根据当前日期取去年同星期日期,包括了Python根据当前日期取去年同星期日期的使用技巧和注意事项,需要的朋友参考一下 业务的开发时候有一个需求,需要对比当前时间段和去年同星期的时间段的数据,例如当前时间是2019-04-11,是今年的第十五周的周四,如何去取去年的第十五周的周四呢? 查了好多资料没有对应的处理方法,于是自己写了这个方法,如果您有更好的方法,可以留言。 py
问题内容: 如何使用Java获取当前日期和时间? 我正在寻找与C#等效的东西。 问题答案: 只需构造一个没有任何参数的新对象即可;这会将当前日期和时间分配给新对象。 在的话的Javadoc的无参数的构造函数: 分配一个Date对象并对其进行 初始化,以便它表示分配它的时间( 以最近的毫秒为单位)。 确保您使用的不是-后者没有零参数构造函数,并且语义有所不同,这是完全不同的对话的主题。:)
问题内容: 如何在JavaScript中获取当前日期? 问题答案: 使用生成一个新的包含当前日期和时间对象。 这将以mm / dd / yyyy的格式给您今天的日期。 只需更改为所需的任何格式。
我想根据月份对值进行分类,以便第一次过滤这些值 例如:-
问题内容: 用Java获取当前日期/时间的最佳方法是什么? 问题答案: 这取决于你想要的日期/时间形式: 如果你想将日期/时间作为一个单一的数值,则可以用UNIX纪元后的毫秒数(以Java形式)表示。该值是UTC时间点的增量,并且与本地时区无关…假设系统时钟已正确设置。 如果你希望日期/时间的格式允许你以数字方式访问组件(年,月等),则可以使用以下方式之一: 给你一个Date使用当前日期/时间初始
问题内容: 要插入到列中。我正在使用 数据库。我的问题是: SQL中有可用的功能吗?或者 它取决于实现,因此每个数据库对此都有自己的功能? MySQL中可用的功能是什么? 问题答案: 完整答案: 1. SQL中有可用的功能吗? 是的,SQL 92规范,97年10月,第pg。171第6.16节指定了以下功能: 2.它是依赖于实现的,因此每个数据库对此都有自己的功能吗? 每个数据库都有其自己的实现,但