使用 LINQ 模拟 SQL Server 2012 Lag Window 函数

2024-02-20

我有一些示例数据,如下所示:(编辑:我没有 SQL Server 2012)

create table #base
(pat_id int
,admission_date date
,discharge_date date
)
go
insert into #base
values
(1, '2007-01-04',   '2007-01-04'),
(1, '2007-01-10',   '2007-01-10'),
(1, '2007-01-11',   '2007-01-11'),
(1, '2007-01-18',   '2007-01-18'),
(1, '2007-01-24',   '2007-01-24'),
(1, '2008-01-25',   '2008-01-26'),
(2, '2007-02-01',   '2007-02-01'),
(2, '2007-02-06',   '2007-02-06'),
(2, '2007-02-07',   '2007-02-07'),
(2, '2007-02-08',   '2007-02-08')

这是我希望使用 LINQ 模拟的 SQL 查询

;with cte 
as
(
    select   pat_id
            ,admission_date
            ,discharge_date
            ,ROW_NUMBER() over(partition by pat_id order by admission_date asc) as rn
    from #base
)
select   firstCte.pat_id
        ,firstCte.discharge_date as firstAdmitReference
        ,secondCte.admission_date as dischargeReference
        ,case when DATEDIFF(DAY,firstCte.discharge_date,secondCte.admission_date) <= 30 then 1 else 0 end Readmit
from cte as firstCte
inner join cte as secondCte
      on firstCte.pat_id = secondCte.pat_id
where firstCte.rn = secondCte.rn -1 

该查询的结果如下所示:

create table #readmit_data
( pat_id int
 ,admission_date date
 ,discharge_date date
 ,within_x_days int
 )
insert into #readmit_data(pat_id,admission_date,discharge_date,within_x_days)
values

(1, '2007-01-04',   '2007-01-10',   1),
(1, '2007-01-10',   '2007-01-11',   1),
(1, '2007-01-11',   '2007-01-18',   1),
(1, '2007-01-18',   '2007-01-24',   1),
(1, '2007-01-24',   '2008-01-25',   0),
(2, '2007-02-01',   '2007-02-06',   1),
(2, '2007-02-06',   '2007-02-07',   1),
(2, '2007-02-07',   '2007-02-08',   1)

在此结果集中,数据的基本格式为

patient ID dischargeDate nextVisitAdmitDate

中的一个 1within_x_days列表明患者在上次出院 30 天后再次入院。理想情况下,30将是用户输入的变量。

LINQ 中有哪些类型的构造可用于执行此操作?


Linq To Sql 没有与 lag/lead/row_number 类似的函数。

您还不能做到这一点,最简单的方法是将 SQL 发送到机器,然后在返回时将结果集映射到您的对象。

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

使用 LINQ 模拟 SQL Server 2012 Lag Window 函数 的相关文章

  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何获得顶部带有千位分隔符的数字?

    SELECT count FROM table A 假设结果是8689 我怎样才能将它转换为8 689在 SQL Server 上 尝试这样 select replace convert varchar convert Money coun
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 使用 postgres 和 node js 在单个语句中执行多个查询

    我需要在像这样的单个语句中执行插入和删除查询 INSERT INTO COMPANY ID NAME VALUES 1 Paul DELETE FROM COMPANY WHERE ID 12 这是我用于执行查询的 node js 代码 p
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 从数据集中完全删除一行

    我的网格视图上有一个删除按钮 单击删除按钮时 该行应该是 完全从会话中删除 我目前正在做以下事情 protected void gvMainLog RowCommand Object sender GridViewCommandEventA
  • MESI协议中的L3$角色是什么

    我想了解intel Broadwell中MESI的更多细节 假设一个cpu插槽有6个核心 core 0 到 core 5 他们每个人都有自己的 L1 和 L2 并共享 L3 共享内存中有一个var X x位于cache line 称为 XC
  • C `clock()` 函数只返回一个零

    The C clock 函数只返回一个零 我尝试使用不同的类型 但没有任何改进 这是一种高精度测量时间的好方法吗 include
  • 正则表达式:匹配第一个下划线之前的所有内容以及之后的所有内容

    我有这样的表情 test abc HelloWorld there could be more here 我想要一个采用第一个单词的正则表达式before第一个下划线 所以得到 test I tried A Za z 1 但这没有用 然后我
  • 如何全局安装ESlint?

    我正在尝试安装 ESlint 以将其与 Sublime Text 2 一起用于我的所有本地项目 配置文档 https eslint org docs user guide getting started global installatio
  • 重写泛型类的方法时发生名称冲突

    我试图理解使用以下代码得到的名称冲突错误 import java util import javax swing class Foo
  • 删除截断行末尾的字形

    当在启用了截断行的终端中使用 Emacs 23 时 Emacs 会在每行末尾添加一个美元符号 指示文本继续超出屏幕边缘 这让我很困扰 我想禁用此功能或以某种方式隐藏美元符号 这可能吗 如果是的话会怎样做 尝试用这个 set display
  • 2D 基本运动 UNITY

    目前我的角色在键盘上完美运行 但是当我通过 3 个 UI 按钮将你的动作转换为触摸时 我也尝试过 UI 图像 但成功了 我没有成功 它基本上是向右 向左 跳跃 应该如何做才能使其遵循以下说明 当用户按下方向键时 角色不会停止行走 直到用户释
  • C/C++编译器反馈优化

    有没有人看到过不同程序的真实世界数字 这些程序使用 C C 编译器提供的反馈优化来支持分支预测 缓存预加载功能等 我搜索了它 令人惊讶的是 即使是流行的解释器开发小组似乎也没有检查过效果 将 ruby python php 等性能提高 10
  • Kafka-node突然从偏移量0开始消费

    有时 kafka node 消费者从偏移量 0 开始消费 而其默认行为是仅消费较新的消息 然后它不会切换回默认行为 您知道如何解决这个问题以及会发生什么以及其行为突然发生变化吗 代码非常简单 并且无需更改代码即可完成此操作 var kafk
  • 实体框架 4 的存储库模式

    我曾经使用带有存储库接口的 NHibernate 在 EF 中使用此模式的正确方法是什么 我如何实现这个存储库接口RepositoryBase
  • 打开 Word 文档并使用 PowerShell 指定编码

    我试图告诉 PowerShell 打开一个文本文件并选择某个编码选项 默认情况下 在 Word 中手动打开此文本文件时 它会尝试使用日语编码打开它 因此无法正确显示某些字符 我尝试了很多不同的方法 但没有任何效果 所以我完全陷入困境 该文本
  • 如何展平嵌套 div 以在 CSS 网格中显示它们?

    我从一个应该有两列宽的对象生成一个表 使用 vue js 每列都来自对象的键和值 这相当于以下实际 HTML div div div this is something long on the first row div div short
  • 如何在 C 程序中将日志逻辑与业务逻辑分离?那么在 C++ 中呢?

    我目前正在使用 C 进行编码 并且有很多 printf 以便有时可以跟踪应用程序的流程 问题是 有时我想要比其他人更多的细节 所以我通常花时间注释 取消注释我的 C 代码 这样我就可以获得适当的输出 使用 Java 或 C 时 我通常可以使
  • Rust:从 std::Rc 智能指针向量实现迭代器

    我从 Rust 开始 我已经面临数据所有权的问题 我想实现一个名为的通用结构Port
  • 使用链表实现优先级队列

    我已经使用链表实现了优先级队列 在这个优先级队列中 最小的int值具有最高的值 因此通过调用remove方法 最小的方法将被删除 节点类代码 public class Node public int iData public Node ne
  • C#中的委托和C++中的函数指针有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 c 中有函数指针吗 https stackoverflow com questions 2738850 are there function pointers in c 我有兴趣找出两者之间的区别de
  • 与 libQt5Core 的链接

    我使用在线安装程序安装了 Qt5 4 在 ubuntu 14 上运行 我正在尝试编译我的 C 源代码并链接到 libQt5Core 但 ld 抛出错误 make g Wall test o Party o Communication o F
  • (de)使用 System.Text.Json 序列化流

    我正在尝试使用将对象序列化为 MemoryStreamSystem Text Json JsonSerializer 我无法在文档中找到其实现 方法 有人可以分享使用 System Text Json 进行序列化和反序列化的示例实现吗 UP
  • 使用 LINQ 模拟 SQL Server 2012 Lag Window 函数

    我有一些示例数据 如下所示 编辑 我没有 SQL Server 2012 create table base pat id int admission date date discharge date date go insert into