Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 需要帮助在查询结束时限制函数的结果吗_Sql_Db2 - Fatal编程技术网

Sql 需要帮助在查询结束时限制函数的结果吗

Sql 需要帮助在查询结束时限制函数的结果吗,sql,db2,Sql,Db2,我在下面的SELECT语句下使用了一个函数,我试图限制where语句中的结果,但似乎不知道如何命名或告诉它引用该特定函数。我想我可以通过将函数放在自己的WITH语句中来实现这一点,但如果可能的话,我宁愿这样做 挑选 天当前日期-天日期B.t标记为运输 从这个函数中,我想把TRANSIT>='8'放在哪里当我现在这样做时,我得到的错误TRANSIT在使用它的上下文中无效。有什么建议吗?您不能从WHERE中的SELECT子句中引用某些内容,它会处理WHERE first see 您可以通过将查询推入

我在下面的SELECT语句下使用了一个函数,我试图限制where语句中的结果,但似乎不知道如何命名或告诉它引用该特定函数。我想我可以通过将函数放在自己的WITH语句中来实现这一点,但如果可能的话,我宁愿这样做

挑选 天当前日期-天日期B.t标记为运输


从这个函数中,我想把TRANSIT>='8'放在哪里当我现在这样做时,我得到的错误TRANSIT在使用它的上下文中无效。有什么建议吗?

您不能从WHERE中的SELECT子句中引用某些内容,它会处理WHERE first see

您可以通过将查询推入子查询,然后引用名称来解决问题:

SELECT *
FROM (
    SELECT DAYS (CURRENT DATE) - DAYS (DATE(B.TSTAMP)) AS "TRANSIT"
    FROM your_table
) A
WHERE TRANSIT >= 8

SELECT子句下的CASE语句是否有区别?例如,我有一个CASE语句END作为DELIVERED,并且我能够在DELIVERED='Y'时告诉我的限制位置。这就是为什么我不明白为什么我可以引用一个而不能引用另一个。注意,这样做会完全忽略任何索引。你最好做一些事情,比如B.TSTAMP>=timestamp current_DATE-8天,'00:00:00'如果你需要结果中的transit值,你仍然需要做减法,但至少比较会很快。。。完整的查询需要更复杂的东西吗?我甚至没有想过这样做。那是救命恩人。但愿我在这里发帖之前考虑过。在大多数情况下,无论何时使用函数,类型转换隐式转换。。。!,或者,查询将无法使用该数据的索引。也有例外-我相信子字符串0?它仍然可以只使用列的开头,并且任何合法标记为DETERMINISTIC的内容都可以缓存,这一事实可能会导致类似的行为。不过,最好对主机变量执行所有操作,优化器可能足够聪明,可以为您重写这些操作。。。。如果你想按交通方式分组,日历表会有帮助。@Clockwork缪斯:好的,它可以工作,但现在我才明白,我需要的是网络日而不是日历日。我是否可以将网络日功能合并到下面的行中?和B.TSTAMP。。。。什么是网络日?此时,您可能需要一个带有布尔值isNetworkDay列的日历表。请注意,对于许多分析查询,日历表和一些相关的物化视图可能非常有用。这个网站和互联网的其他部分都有一些示例表/构造查询,所以请确定您想要什么。