如何根据生效日期获取当前记录?

2023-12-14

如何根据生效日期获取当前记录?我应该使用子查询吗?除了 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 

我的目标是获取所有的 ResourceID现在属于用户输入的 OrganizationUnit。例如,如果用户输入中小企业在 OrganizationID 参数中,然后它会提取当前下的所有 ReourceID中小企业。到目前为止,我下面的 MAX 查询不起作用。

select OrganizationID, ResourceID, MAX(EffectiveDate) as EffectiveDate from ResourceOrganization
where OrganizationID = 'SMESM1HTOVEOVE'
group by OrganizationID, ResourceID, EffectiveDate

下面是我上面简短的 MAX 查询的结果。这是错误的,因为 ResourceIDVC1976目前属于 APCAP1HTOVEOVE,于 2012 年 7 月 9 日 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

有人可以帮忙提供意见吗?因为我将在下面将其用于我的存储过程。我还将包括我的过程供您自己细读。

谢谢你!

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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据生效日期获取当前记录? 的相关文章

  • Postgresql 和 jsonb - 将键/值插入多级数组

    非常类似于这个帖子 https stackoverflow com questions 58959678 postgresql add key to each objects of an jsonb array 但我很难适应他们的解决方案
  • EF4 和 SQL Server 2000

    我使用 EF4 和 SQL Server 2005 开发了我的网站 但当转移到临时站点时 发现他们使用 SQL Server 2000 现在我收到此错误 我认为该错误与 SQL Server 2000 有关 Incorrect syntax
  • Linq lambda表达式多对多表选择

    我有三个表 其中两个是多对多关系 Picture 这是中间mm表中的数据 Edit 到这里 我得到正确的 4 行返回 但它们都是相同的结果 我知道我需要返回 4 行 但有不同的结果 return this mediaBugEntityDB
  • MySQL 中有“connect by”替代方案吗?

    如果我使用 Oracle 有connect by可用于创建分层查询的关键字 目前我正在一个项目中使用MySQL 我想知道是否有替代方案connect by在 MySQL 中 我尝试过谷歌 但到目前为止还没有结果 我想要实现的是通过一个查询从
  • SQL中等连接和内连接的区别

    我有 2 个表 名为 table123 and table246 table123 列 ID Dept ID 名 Surname Salary Address table246 列 Dept ID 部门名称 我想找到每个部门工资最低的员工列
  • 查找 SQL Server 中表的 B 树高度

    由于数据库数据以B Tree的形式组织在8k页中 对于PK信息也是如此 数据库中的每个表都应该可以计算B Tree的高度 从而揭示达到某些数据需要多少次跳跃 由于行大小和 PK 大小都非常重要 因此很难计算 因为例如varchar 250
  • 如何在 SQL 中选择“上一条”和“下一条”记录?

    I am building a blog post detail page on my site that will display display a previous and next link similar to how a typ
  • 如何手动设置auto_increment的下一个值?

    我手动向表中添加了一些行 并且还手动设置了 ID 自动增量 现在 当我尝试通过我的应用程序将新行添加到数据库表中时 我收到错误 创建的 ID 值已存在 如何手动设置下一个ID值 例如 在表中我必须有ID 那么如何告诉PostgreSQL 下
  • 使用sqlbulkcopy之前如何创建表

    我有一个 DBF 文件 我正在尝试导入该文件 然后将其写入 SQL 表 我遇到的问题是 如果我使用 SqlBulkCopy 它需要我提前创建表 但在我的场景中这是不可能的 因为 dbf 文件不断变化 到目前为止 这是我的代码 public
  • sql查询中case语句中的布尔值

    我在选择查询中使用 case 语句 类似这样 Select col1 col2 isActive case when col3 abc then 1 else 0 end col4 from
  • 从 SQL Server 中的子查询值或其他聚合函数获取平均值

    我有 SQL 语句 SQL Server SELECT COUNT ActionName AS pageCount FROM tbl 22 Benchmark WHERE DATEPART dw CreationDate gt 1 AND
  • Oracle中如何选择前100行?

    我的要求是获取每个客户的最新订单 然后获取前100条记录 我编写了一个如下查询来获取每个客户的最新订单 内部查询工作正常 但我不知道如何根据结果获得前 100 名 SELECT FROM SELECT id client id ROW NU
  • 如何使用 Alter Table 在 Access 中创建小数字段?

    我想以编程方式在 MS Access 表中创建一个新列 我尝试过很多排列ALTER TABLE MyTable Add MyField DECIMAL 9 4 NULL 并得到 字段定义中的语法错误 我可以轻松创建一个数字字段Double类
  • 随机排列每行的列值

    我正在使用 C NET 开发多项选择题考试生成器 每次做出报告时 都会在数据库中随机挑选问题 并随机调整选项 我可以做随机问题部分 但我不能做选择的洗牌 我有一张表 其中一行如下 question answer distractor1 di
  • TSQL:无法对 COUNT(*) 执行聚合函数 AVG 来查找一天中最繁忙的时间

    考虑一个保存日志数据的 SQL Server 表 重要的部分是 CREATE TABLE dbo CustomerLog ID int IDENTITY 1 1 NOT NULL CustID int NOT NULL VisitDate
  • 过滤项目来源

    通过此代码 我设置了数据网格的 ItemsSource 不过 我有更多的 wpf 控件来过滤数据网格 例如从时间范围过滤数据网格 我可以为此编写一个新查询 但这似乎没有必要 因为数据已经可用 我只需要过滤它 最好的方法是什么 我能得到的任何
  • SQL 查询结果为字符串(或变量)

    是否可以将SQL查询结果输出到一个字符串或变量中 我的php和mysql不好 假设我有数据库 agents 其中包含列 agent id agent fname agent lname agent dept 使用此查询 sql SELECT
  • 常量值如何影响连接的 ON 子句?

    我最近发现 LEFT JOIN 的 ON 子句可能包含 1 1 等值 这让我感到不安 因为它打破了我对连接功能的看法 我遇到过以下情况的更详细版本 SELECT DISTINCT Person ID FROM Person LEFT JOI
  • SQL Server 标识列值从 0 而不是 1 开始

    我遇到了一个奇怪的情况 数据库中的某些表的 ID 从 0 开始 即使 TABLE CREATE 的 IDENTITY 1 1 也是如此 对于某些表来说是这样 但对于其他表则不然 它一直有效到今天 我尝试过重置身份列 DBCC CHECKID
  • SQLite 中的累积求和值

    我正在尝试在 SQLite 中执行值的累积和 我最初只需要对一列求和并获得代码 SELECT t MyColumn SELECT Sum r KeyColumn1 FROM MyTable as r WHERE r Date lt t Da

随机推荐

  • AS3:获取 Matrix 对象的比例

    最常见的问题是如何缩放 DisplayObject 答案通常是使用 Matrix 我的问题是 如何获取矩阵的比例 scaleX 和scaleY 有一个 Matrix scale 方法来设置scaleX和scaleY 但它不返回值 并且不存在
  • 如何以编程方式确定 iOS 中的默认电子邮件帐户/地址?

    在 iOS 设备上 一次可以配置多个电子邮件帐户 在 设置 应用中 用户可以选择默认电子邮件帐户 邮件 gt 邮件 默认帐户 此默认帐户是通过 MFMailComposeViewController 发送电子邮件时的 发件人 地址 是否有
  • Python 中 dir() 和 __dict__ 最大的区别是什么

    class C object def f self print self dict print dir self c C c f output class delattr f 为什么 self dict 中没有 f dir 所做的不仅仅是仰
  • 将 JPanel 变成 JOptionPane.OK_OPTION

    目前我有一个扩展 JPanel 的类 基本上显示有关传递到其构造函数的对象的一些信息 屏幕上有各种标签和图像图标 并且有一个 BorderLayout 设置 当用户左键单击主 GUI 中的 ImageIcon 并显示在屏幕上时 会触发此面板
  • .NET 中集合的内存分配

    这可能是一个骗局 我没有找到足够的信息 我正在讨论 Net 中集合的内存分配 集合中分配的元素的内存在哪里 List
  • 如何使用 Bootstrap 在 Django 中自定义复选框和单选框?

    我正在尝试使用 bootstrap 类自定义 Django 中的复选框和单选按钮 然而 这并没有奏效 我已经尝试在 forms py 中插入引导类widgets and attrs custom control custom radio c
  • Sparql 使用变量绑定计数结果

    有什么办法可以bind的结果count到一个变量 我尝试了以下方法 不起作用 SELECT totalSubject WHERE s p o BIND COUNT s AS totalSubject COUNT is an 总计的函数 只能
  • 睡眠/等待,不消耗CPU

    所以我正在将这个智能手机应用程序模拟到 Windows 这是一个运行其逻辑并绘制方法的游戏1 60速度 以毫秒为单位 这是16 6667 我已经实现了这个游戏循环 private const double UPDATE RATE 1000d
  • clusterExport到R并行中的单线程

    我想分割一个大的data frame分成块并将每个块单独传递给集群的不同成员 就像是 library parallel cl lt makeCluster detectCores for i in 1 detectCores cluster
  • iOS 13 Beta 版本中的应用程序启动时应用程序崩溃

    这是崩溃报告 崩溃仅发生在 iOS 13 beta 版本上 Crashed com apple main thread 0 libsystem pthread dylib 0x1ae056484 pthread get qos class
  • SwiftUI 列表正在使用 .navigationBarItems 进行剪辑[重复]

    这个问题在这里已经有答案了 When I add navigationBarItems modifier list is clipping and doesn t take all space like this It should be
  • Google plus API 可像 Facebook 一样在墙上发布

    我一直在谷歌上搜索教程 以便在谷歌加上发布一些文本 但好像没有 我还尝试浏览谷歌为 mac 和 iPhone 开发人员提供的文档 但找不到任何可以解决我的问题的内容 此外 关于如何让用户登录 google plus 帐户的信息也很少 我不确
  • object-fit 如何与 canvas 元素配合使用?

    我一直无法找到任何文档来告诉我一种或另一种方式 我可以在画布元素上使用适合对象的封面吗 我做了一些实验 但它的表现并不符合预期 有人能给我一个明确的答案吗 object fit1 will only have an effect when
  • 为什么我会收到此 NullPointer 异常?

    两个表 一个的主键是另一个的外键 旧数据库 我使用双向一对一映射 Entity public class First Id protected int a OneToOne mappedBy first cascade CascadeTyp
  • 将 Microsoft Office Communicator 2007 集成到 ASP.NET 页面中

    我正在为我公司的 Intranet 使用 ASP NET 和 C 构建网站 那么是否可以将 Microsoft Office Communicator 2007 集成到 ASP NET Page 中 即该网站应该能够提供所有联系人的当前状态
  • PyQt4 - “运行时错误:底层 C/C 对象已被删除”

    我不断收到此运行时错误 我不知道如何修复 这就是我想要实现的目标 当我单击 QTreeView 中的不同项目时 我想用值动态更新此 QTableWidget 在大多数情况下 我的代码可以工作 除非我单击第二个项目并且我需要更新我的 QTab
  • 缓存sql数据库的结果,还是每次查询?

    我正在根据 sql 查询生成页面 这是查询 CREATEPROCEDURE sp searchUsersByFirstLetter searchQuery nvarchar 1 AS BEGIN SET NOCOUNT ON SELECT
  • 以编程方式自动静音 Android 手机的音量?

    我正在开发一个可以自动关闭 Android 手机声音的应用程序 如何检测声音的音量并以编程方式将其关闭 if hour myTime getHour minute myTime getMinute if Settings getSetMyT
  • Twilio环境变量错误

    Twilio Python如果我将 account sid 和 auth token 直接放入代码中 则工作正常 但当我将它们设置为环境变量时 则无法工作 我正在使用 PyCharm 并通过编辑配置 gt 环境变量来设置它们 就像我过去对其
  • 如何根据生效日期获取当前记录?

    如何根据生效日期获取当前记录 我应该使用子查询吗 除了 MAX 之外还有什么可以使用的吗 我有这些表格示例 ResourceID is the ID number of the Resource OrganizationId is the