【问题标题】:Using SqlKata from an existing Query从现有查询中使用 SqlKata
【发布时间】:2020-07-14 07:51:21
【问题描述】:

我有用于在服务中运行以生成报告的作业的现有查询。简单的事情,比如

"Select * from Transactions"

然后作业将根据预设规则将参数附加到这些查询中,例如 Date>Yesterday 等。SqlKata 看起来可以做到这一点,但我不确定如何从现有查询中实例化 Query 对象。这样的事情可能吗?

Dim Qry as new Query("Select * from Transactions").OrderByDesc("Date")
Qry.Where("Date", ">", Date.Now().AddDays(-1))
return Qry.Get()

【问题讨论】:

    标签: sql-server vb.net sqlkata


    【解决方案1】:

    在这种情况下,您可以做的最接近的事情是包装内部查询并在其上添加条件,您可以在此处使用 SubQuery 或 CTE 方法。 像这样的东西,这在 C# 中,但想法是一样的。

    var existingSql = "select * from transactions";
    var query = new Query().FromRaw($"({existingSql}) as inner")
                           .Where("date", ">=", DateTime.UtcNow.Date);
    

    查看此示例on playground

    【讨论】:

    • 所以它按原样工作。但是我想我在 SqlKata 中发现了一个错误,它会产生一个无效的查询。这是基本查询: SELECT * FROM SERVERNAME.DBNAME.dbo.TABLENAME 这是 sqlkata 最终创建的内容: SELECT * FROM [(SELECT * FROM SERVERNAME].[DBNAME].[dbo].[TABLENAME)] AS [a ] 查看方括号在服务器名称周围的错误位置。
    • 在这种情况下你必须使用FromRaw 而不是From
    • 你是对的,我的错。按预期工作,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    相关资源
    最近更新 更多