向记录添加结束日期,即下一条记录的开始日期(linq to sql)

爵士乐

地址表中每个类型和员工有 1 个或多个地址。每行都有一个地址生效日期,但没有结束日期。我需要使用员工的下一个地址生效日期来“伪造”结束日期。

源表是:

EFFDT       ADDRESS1          ADDRESS_TYPE  EMPLID
12/21/1999  7927 SW 31st Ave    HOME          6
4/15/2002   7070  Shady Lane    HOME          6
3/18/2014   1228 Hall           HOME          6

结果应该是:

EFFDT       ADDRESS1          ADDRESS_TYPE  EMPLID    ENDDATE
12/21/1999  7927 SW 31st Ave    HOME          6      4/15/2002
4/15/2002   7070  Shady Lane    HOME          6      3/18/2014 
3/18/2014   1228 Hall           HOME          6       NULL 

我的 SQL 可以工作,但是让它在 Linq to SQL 中工作一直是个问题。我不确定 SQL 是否是最好的,因为它没有考虑类型。但目前,我所有的数据都只有 HOME 类型的地址。我也想考虑其他类型。这是 SQL:

Select A.EFFDT, A.ADDRESS1, A.ADDRESS_TYPE, A.EMPLID,
(SELECT MIN(EFFDT) 
    FROM dbo.PS_ADDRESSES 
    WHERE EFFDT > A.EFFDT AND EMPLID = A.EMPLID) as EndDate
FROM dbo.PS_ADDRESSES A 
ORDER BY A.EMPLID
网络魔法师

翻译很容易,虽然我没有尝试优化 LINQ(也许 group by 会更有效)。

from a in dbo.PS_ADDRESSES
orderby a.EMPLID
select new {
    a.EFFDT, a.ADDRESS, a.ADDRESS_TYPE, a.EMPLID,
    EndDate = (from na in dbo.PS_ADDRESSES where na.EFFDT > a.EFFDT && na.ADDRESS_TYPE == a.ADDRESS_TYPE && na.EMPLID == a.EMPLID select na.EFFDT).Min()

}

翻译时,只是翻译的LINQ顺序条款:fromwhere,[ orderby],select并认识到MINMAXDISTINCTTOP作为后缀的功能来完成。LINQ 理解语法作者决定不在语法中包含任何一元 lambda 函数。如果 SQL 中已经有一个表别名FROM以匹配 LINQ 语法,这会有所帮助,但您始终可以添加一个(就像我在 中所做的那样na)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL:删除 2 条或多条日期较旧的记录中的一条(或全部)记录

来自分类Dev

合并记录以显示开始日期和结束日期SQL

来自分类Dev

阅读下一条记录“ NOT”的上一条记录sql

来自分类Dev

需要基于最早日期的第一条记录-SQL Server 2012

来自分类Dev

如何根据 SQL 查询中其他聚合列的日期获取最后一条记录

来自分类Dev

获取日期不为空的上一条记录 - SQL SERVER

来自分类Dev

如何在T-SQL(SSMS 2017)中基于下一条记录的[EffectiveDate] -1计算到期日期?

来自分类Dev

如何在Oracle SQL中检索相同日期的组中的第一条记录和最后一条记录

来自分类Dev

删除并在增加日期的同时向sql表添加记录

来自分类Dev

在SQL中将上一行的结束日期作为下一行的开始日期

来自分类Dev

SQL - 显示一条记录是否是在另一条记录之后创建的

来自分类Dev

当我使用此sql查询时,它会重复该值,即表中只有一条记录,并且显示8条记录

来自分类Dev

使用SQL Server中不同记录的开始日期和结束日期创建具有数据范围的临时表

来自分类Dev

当日期/时间条件满足另一个表中的另一条记录时,在 SQL 中重新编码值

来自分类Dev

sql.eachRow 只将最后一条记录添加到列表中

来自分类Dev

开始日期及结束的SQL语句

来自分类Dev

SQL更新或插入基于找到的最后一条记录

来自分类Dev

如何从sql server中获取最后一条记录?

来自分类Dev

SQL Server仅加入一条记录

来自分类Dev

如何打印SQL Server的最后一条记录

来自分类Dev

sql-如果重复则获取一条记录

来自分类Dev

SQL查询获取第一条记录

来自分类Dev

在 SQL Server 中使用循环更新一条记录

来自分类Dev

将视图中的2条记录合并为一条记录-SQL Server

来自分类Dev

在 SQL 中将两条记录分组为一条记录

来自分类Dev

如何从MS Access / SQL中的第一条记录开始获取一列中每三个记录的平均值?

来自分类Dev

SQL从给定日期选择前3条记录

来自分类Dev

SQL从给定日期选择前3条记录

来自分类Dev

Oracle SQL从有序数据集中获取第一条记录和最后一条记录

Related 相关文章

  1. 1

    SQL:删除 2 条或多条日期较旧的记录中的一条(或全部)记录

  2. 2

    合并记录以显示开始日期和结束日期SQL

  3. 3

    阅读下一条记录“ NOT”的上一条记录sql

  4. 4

    需要基于最早日期的第一条记录-SQL Server 2012

  5. 5

    如何根据 SQL 查询中其他聚合列的日期获取最后一条记录

  6. 6

    获取日期不为空的上一条记录 - SQL SERVER

  7. 7

    如何在T-SQL(SSMS 2017)中基于下一条记录的[EffectiveDate] -1计算到期日期?

  8. 8

    如何在Oracle SQL中检索相同日期的组中的第一条记录和最后一条记录

  9. 9

    删除并在增加日期的同时向sql表添加记录

  10. 10

    在SQL中将上一行的结束日期作为下一行的开始日期

  11. 11

    SQL - 显示一条记录是否是在另一条记录之后创建的

  12. 12

    当我使用此sql查询时,它会重复该值,即表中只有一条记录,并且显示8条记录

  13. 13

    使用SQL Server中不同记录的开始日期和结束日期创建具有数据范围的临时表

  14. 14

    当日期/时间条件满足另一个表中的另一条记录时,在 SQL 中重新编码值

  15. 15

    sql.eachRow 只将最后一条记录添加到列表中

  16. 16

    开始日期及结束的SQL语句

  17. 17

    SQL更新或插入基于找到的最后一条记录

  18. 18

    如何从sql server中获取最后一条记录?

  19. 19

    SQL Server仅加入一条记录

  20. 20

    如何打印SQL Server的最后一条记录

  21. 21

    sql-如果重复则获取一条记录

  22. 22

    SQL查询获取第一条记录

  23. 23

    在 SQL Server 中使用循环更新一条记录

  24. 24

    将视图中的2条记录合并为一条记录-SQL Server

  25. 25

    在 SQL 中将两条记录分组为一条记录

  26. 26

    如何从MS Access / SQL中的第一条记录开始获取一列中每三个记录的平均值?

  27. 27

    SQL从给定日期选择前3条记录

  28. 28

    SQL从给定日期选择前3条记录

  29. 29

    Oracle SQL从有序数据集中获取第一条记录和最后一条记录

热门标签

归档