将 Oracle SQL 转换为 LLBLGEN LINQ 表达式 C#

     2023-04-12     179

关键词:

【中文标题】将 Oracle SQL 转换为 LLBLGEN LINQ 表达式 C#【英文标题】:Converting Oracle SQL to LLBLGEN LINQ expression C# 【发布时间】:2020-04-27 18:31:13 【问题描述】:

我有一个包含 1 个表的数据库:

APP_ID|SETTING_NAME|SETTING_VALUE|ROW_LST_UPD_TS
1     |ab1         |111          |17:32 
1     |ab2         |112          |17:32
--------------------------------------- 
1     |ab1         |111          |14:31 
1     |ab2         |112          |14:31 
---------------------------------------
2     |ba1         |121          |18:44 
2     |ba2         |122          |18:44
--------------------------------------- 
2     |ba1         |121          |15:27 
2     |ba2         |122          |15:27
--------------------------------------- 

使用 llblgen pro 和 LinqMetaAdapter 我需要获取按 APP_ID 分组的最新 ROW_LST_UPD_TS 的所有记录

我想出了 oracle 查询:

SELECT distinct 
    configurationLog.SETTING_NAME, 
    configurationLog.SETTING_VALUE, 
    configurationLog.ROW_LST_UPD_TS, 
    configurationLog.ROW_LST_UPD_UID, 
    configurationLog.APP_ID
FROM 
    EVENT_MGT.CONFIGURATION_LOG configurationLog
INNER JOIN
(
    SELECT APP_ID, MAX(ROW_LST_UPD_TS) maxTimestamp 
    FROM EVENT_MGT.CONFIGURATION_LOG
    GROUP BY APP_ID
) latestSettingPerApp
ON 
    latestSettingPerApp.maxTimestamp <= configurationLog.ROW_LST_UPD_TS 
    and latestSettingPerApp.maxTimestamp >= configurationLog.ROW_LST_UPD_TS - 1/1440  
    and latestSettingPerApp.APP_ID = configurationLog.APP_ID
ORDER BY 
    configurationLog.APP_ID;

但无法将其转换为 LINQ

【问题讨论】:

【参考方案1】:

这只是间接相关,因为它不是您的 LINQ 问题的解决方案,但我认为使用窗口函数编写您的查询要好得多。我认为它更易于阅读和维护,并且对于大型数据集可能会更高效。

with max_vals as (
  SELECT
    SETTING_NAME, 
    SETTING_VALUE, 
    ROW_LST_UPD_TS, 
    ROW_LST_UPD_UID, 
    APP_ID,
    max (ROW_LST_UPD_TS) over (partition by app_id) as max_ts
  FROM 
    EVENT_MGT.CONFIGURATION_LOG configurationLog
)
select
  SETTING_NAME, SETTING_VALUE, ROW_LST_UPD_TS, ROW_LST_UPD_UID, APP_ID
from max_vals
where
  ROW_LST_UPD_TS = max_tx
order by
  APP_ID

您使用的构造看起来就像您在分析功能不可用的 DMBS 中所做的那样。

同样,这不是一个解决方案,但超出了我在评论中的合理范围。

【讨论】:

将 Oracle 外连接转换为 SQL Server

】将Oracle外连接转换为SQLServer【英文标题】:ConvertOracleouterjointoSQLServer【发布时间】:2014-07-2015:35:53【问题描述】:我无法将此OracleSQL转换为SQL服务器。这是查询:SELECTCM.ModuleID,CM.ModuleDescription,CM.ImageIndex,CASEWHENCMAC.ClassIDISNULLTHEN\... 查看详情

将 SQL 转换为 Oracle 设置参数 [重复]

】将SQL转换为Oracle设置参数[重复]【英文标题】:covertingTSQLtoOraclesettingparameters[duplicate]【发布时间】:2020-02-1222:37:42【问题描述】:我开始了一份新工作,需要为这份工作学习Oracle。我正在尝试转换这个简单的代码,以便以后可... 查看详情

将 T-SQL 交叉应用转换为 Oracle

】将T-SQL交叉应用转换为Oracle【英文标题】:ConvertT-SQLCrossApplytoOracle【发布时间】:2015-04-2506:19:46【问题描述】:我希望将此使用交叉应用的SQLServer(T-SQL)查询转换为Oracle11g。Oracle直到12g才支持CrossApply,所以我必须找到解决方法... 查看详情

Oracle SQL - 将选择计数(*)转换为零或一

】OracleSQL-将选择计数(*)转换为零或一【英文标题】:OracleSQL-convertselectcount(*)intozeroorone【发布时间】:2015-10-2319:35:35【问题描述】:我正在使用Oracle,我想将选择计数的结果转换为“二进制”0/1值...0=0...非零=1。根据我在网上... 查看详情

将oracle查询的日期格式转换为sql server查询

】将oracle查询的日期格式转换为sqlserver查询【英文标题】:convertdateformatoforaclequerytosqlserverquery【发布时间】:2021-05-1911:04:31【问题描述】:我正在尝试将以下oracle查询转换为SQL服务器查询。Select*fromtableAWHERETRUNC(a.Generate_DATE,\'MM\'... 查看详情

将 oracle sql 时间戳转换为 char Coldfusion

】将oraclesql时间戳转换为charColdfusion【英文标题】:Convertoraclesqltimestamptocharcoldfusion【发布时间】:2014-07-3008:42:29【问题描述】:我要做的是将oracle时间戳转换为_char,以便人眼可以阅读。以下是我的SQL代码:<cfquerydatasource="#app... 查看详情

将 Oracle PL/SQL 代码转换为 C#

】将OraclePL/SQL代码转换为C#【英文标题】:ConvertOraclePL/SQLcodetoC#【发布时间】:2013-04-3006:33:27【问题描述】:谁能指导我如何将以下OraclePL/SQL代码转换为C#?declarel_encryptedraw(100);p_keyraw(100);p_plainraw(100);l_modenumber;beginl_mode:=dbms_crypto.... 查看详情

从 Oracle 转换为 SQL Server

】从Oracle转换为SQLServer【英文标题】:ConversionfromOracleintoSQLServer【发布时间】:2016-01-2223:31:58【问题描述】:我正在尝试将Oracle脚本解释为SQL脚本,但我发现我将连接转换错误,因为Oracle正在使用同一个表的多个实例(请参阅sel... 查看详情

将 oracle.sql.TIMESTAMPTZ 转换为字符串值的问题

】将oracle.sql.TIMESTAMPTZ转换为字符串值的问题【英文标题】:Troubleswithconvertingoracle.sql.TIMESTAMPTZtostringvalue【发布时间】:2014-10-2404:56:19【问题描述】:我尝试从oracledb获取一些数据,将这些数据放入json并在其他地方使用,但我在... 查看详情

将 MySQL 更新 SQL 语句转换为 Oracle 更新语句 [重复]

】将MySQL更新SQL语句转换为Oracle更新语句[重复]【英文标题】:ConvertMySQLupdateSQLstatementtoOracleupdatestatement[duplicate]【发布时间】:2019-10-2314:20:17【问题描述】:我的查询在MySQL上运行良好,但如果我在Oracle数据库中执行它,我会收... 查看详情

将 Oracle SQL 转换为 Access Jet SQL,左连接

】将OracleSQL转换为AccessJetSQL,左连接【英文标题】:TranslatingOracleSQLtoAccessJetSQL,LeftJoin【发布时间】:2011-10-0321:47:05【问题描述】:这里一定有我遗漏的东西。我在Toad中有一个漂亮、漂亮的OracleSQL语句,它会返回一个包含我想要... 查看详情

Oracle SQL 将字符串转换为日期

】OracleSQL将字符串转换为日期【英文标题】:OracleSQLcastingstringasdate【发布时间】:2016-12-0721:29:45【问题描述】:这个sql有什么问题?这给了我0个结果:Select*fromDOCwhereCREATION_TIME&gt;to_TIMESTAMP(\'01-Jan-6911.59.16AM\',\'dd-Mon-YYHH12.mi.ss.F... 查看详情

使用 LIKE 将 Oracle 查询转换为 SQL Server 查询

】使用LIKE将Oracle查询转换为SQLServer查询【英文标题】:ConvertinganOracleQueryusingLIKEtoSQLServerQuery【发布时间】:2021-05-0801:19:27【问题描述】:我正在转换使用Oracle数据库的应用程序。在部分代码中有一个条件(下)。在ELSE中,他们... 查看详情

SQL Plus 将字符转换为字节以用于 Oracle 复制命令

】SQLPlus将字符转换为字节以用于Oracle复制命令【英文标题】:SQLPlusconvertingChartoByteforOracleCopyCommand【发布时间】:2019-07-2914:32:59【问题描述】:在OracleSQLPlus中,在创建表/插入记录时使用复制命令总是将表CHAR/VARCHAR2列转换为BYTE... 查看详情

如何将 MySQL 查询转换为等效的 Oracle sql 查询

】如何将MySQL查询转换为等效的Oraclesql查询【英文标题】:HowtoconvertMySQLquerytoequivalentOraclesqlQuery【发布时间】:2020-07-0921:55:19【问题描述】:我想将下面的MYSQL查询转换为OracleSQL查询,有人可以帮忙吗?instructor表下面是父实体,i... 查看详情

使用 FME 将 oracle sdo.geometry 转换为 SQL 几何数据类型

】使用FME将oraclesdo.geometry转换为SQL几何数据类型【英文标题】:UsingFMEtoconvertoraclesdo.geometrytoSQLgeometrydatatype【发布时间】:2015-08-3117:52:23【问题描述】:您好,我必须使用sdo_geometryfieldfromanOracledatabase并将数据传输到SQL数据库(可... 查看详情

包含列的 SQL Server 索引 - 转换为 Oracle

】包含列的SQLServer索引-转换为Oracle【英文标题】:SQLServerIndexeswithIncludedColumns-converttoOracle【发布时间】:2018-06-2619:32:41【问题描述】:我对SQLServer完全陌生。目前必须将表、索引、触发器等转换为Oracle。据我所知,Oracle中没有IN... 查看详情

将 Oracle SQL 转换为 OBIEE Evaluate/TO_CHAR 函数

】将OracleSQL转换为OBIEEEvaluate/TO_CHAR函数【英文标题】:ConvertOracleSQLtoOBIEEEvaluate/TO_CHARFunction【发布时间】:2019-07-1015:56:26【问题描述】:我正在尝试将OracleSQLDeveloperSelect语句转换为OracleBI函数。似乎Evaluate是要走的路,但语法有点... 查看详情