【问题标题】:Add Date and Time Values? & how to query from one query's results into another query添加日期和时间值?以及如何从一个查询的结果查询到另一个查询
【发布时间】:2017-11-10 09:13:35
【问题描述】:

我想要完成的是更新此查询,以便能够像 getdate 函数一样自动提取当前日期,这样就不必每天手动更新日期。

use n

select id, type, name, log_time , start_time , documents_created , pages_created, processed, processed_time  
from N_LF_OCR_LOG 
where 
--name like 'C-INV00410249%' -- CI11667474 (6).pdf' 
log_time between  '2017-3-07 00:00:00.000' and '2017-3-07 23:59:00.000'   
and documents_created <> 0 
or  ( documents_created is null and log_time between '2017-3-07 00:00:00.000' and '2017-3-07 23:59:00.000'  ) 
order by log_time

然后从执行的结果中,我想要另一个查询来查询这些结果以显示何时: 类型列中的任何结果 > 名为“类型和通用生产中的电子邮件 ocr” “documents_created & pages_created”数字不匹配的地方。 (见下图)

如果后面那些行的“NULL”文件丢失或少于 7 个文件,也会报告。

【问题讨论】:

  • 请修正您的查询格式。
  • 我把空格去掉了。现在应该更新了。 =)

标签: sql sql-server tsql getdate


【解决方案1】:

这是在 SO 上发布时创建测试用例的好方法。 Link to your SQL query 我将您的 AND/OR 布尔逻辑修改为我认为您正在尝试完成的操作,并添加了 cmets。

将当前日期添加到过滤器是通过表达式完成的:

  • 今天的午夜是通过将 getdate() 转换为删除时间部分的日期来创建的

    转换(日期,getdate())

  • 今天晚上 11:59 稍微复杂一点,但基本上是将日期时间转换为浮点表示,删除时间部分并将“23:59”的具体时间添加回它

    CONVERT(datetime,floor(CONVERT(float,getdate()))) + '23:59:00'

第 2 部分,我认为您不需要在结果之上创建另一个查询来获得您要查找的内容。您可以简单地添加其他条件,您也可以使用创建的过滤器过滤到您想要的类型。

如果您确实想再次查询结果,则需要创建一个 WITH 子句,然后您可以像这样执行“第二个”查询:

-- first query
WITH my_subquery as (
    SELECT 1 as num
    FROM tbl)

-- second query
SELECT max(num) 
FROM my_subquery

编辑 根据要求,here 是第一个查询的链接(没有类型过滤器和页面创建的过滤器),here 是第二个查询的链接(有类型过滤器和页面创建的过滤器)。

【讨论】:

  • 谢谢!与第二部分。当documents_created和pages_created'不匹配时,我想提取'类型和通用生产'documents_created和pages_created''attachment'行中的'email ocr。在单独的报告中。因为会同时运行
  • 我不确定你链接的目的是什么。还要删除查询顶部的“use N”,因为您无法告诉在线 sql 编辑器使用特定数据库来执行查询。
  • 帖子中的链接包含您为第 2 部分请求的查询。
  • 我在帖子中添加了两个链接,它们几乎相同,但是如果您需要的话,您可以为两个报告分别运行两个查询。
  • 哦,我的错...那么,有没有办法在不创建表格的情况下做到这一点?
猜你喜欢
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 2011-12-02
  • 2019-05-29
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
相关资源
最近更新 更多