Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 Oracle:按别名排序,标识符错误无效_Sql_Oracle_Sql Order By - Fatal编程技术网

Sql Oracle:按别名排序,标识符错误无效

Sql Oracle:按别名排序,标识符错误无效,sql,oracle,sql-order-by,Sql,Oracle,Sql Order By,我得到了一个奇怪的错误,我想我可能知道答案,但似乎仍然无法修复。它说“LateStupDateDateDate”是一个无效的标识符,我认为这是因为它在到达CASE语句之前运行ORDER BY语句,但这对它的结构没有多大意义。你有什么想法吗 SELECT * FROM ( SELECT sym.*, ( CASE WHEN shr_last_updt_dt >= trd_last_updt_dt THEN shr_last_updt_dt ELS

我得到了一个奇怪的错误,我想我可能知道答案,但似乎仍然无法修复。它说“LateStupDateDateDate”是一个无效的标识符,我认为这是因为它在到达CASE语句之前运行ORDER BY语句,但这对它的结构没有多大意义。你有什么想法吗

SELECT * FROM 
( 
  SELECT sym.*, 
    (
    CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
    THEN shr_last_updt_dt 
    ELSE trd_last_updt_dt END
    ) AS LatestUpdatedDate,
    row_number() over ( ORDER BY LatestUpdatedDate DESC ) AS line_number 
  FROM trdg_sym sym  
  WHERE ((wkly_rpt_dt = :settleDate)) AND ((lower(rpt_type_cd)=lower(:reportType)))
)  
WHERE line_number BETWEEN 1 AND 25 ORDER BY line_number

生成结果集后将给出别名,因此不能在窗口函数中使用它们。您可以这样做:

SELECT * FROM 
( 
  SELECT sym.*, 
    (
    CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
    THEN shr_last_updt_dt 
    ELSE trd_last_updt_dt END
    ) AS LatestUpdatedDate,
    row_number() over ( ORDER BY 
     (
        CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
        THEN shr_last_updt_dt 
        ELSE trd_last_updt_dt END
     ) DESC ) AS line_number 
  FROM trdg_sym sym  
  WHERE ((wkly_rpt_dt = :settleDate)) AND ((lower(rpt_type_cd)=lower(:reportType)))
)  
WHERE line_number BETWEEN 1 AND 25 ORDER BY line_number
或者将子查询包装到另一个查询

SELECT * FROM 
(
  SELECT *, 
    row_number() over ( ORDER BY LatestUpdatedDate DESC ) AS line_number 
  FROM
  (
     SELECT sym.*, 
       (
          CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
          THEN shr_last_updt_dt 
          ELSE trd_last_updt_dt END
        ) AS LatestUpdatedDate 
     FROM trdg_sym sym  
     WHERE ((wkly_rpt_dt = :settleDate)) AND ((lower(rpt_type_cd)=lower(:reportType)))
   )
)  
WHERE line_number BETWEEN 1 AND 25 ORDER BY line_number

另外,我不确定oacle的语法是否正确,但您是否应该为子查询指定别名?

生成结果集后将指定别名,因此您不能在窗口函数中使用它们。您可以这样做:

SELECT * FROM 
( 
  SELECT sym.*, 
    (
    CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
    THEN shr_last_updt_dt 
    ELSE trd_last_updt_dt END
    ) AS LatestUpdatedDate,
    row_number() over ( ORDER BY 
     (
        CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
        THEN shr_last_updt_dt 
        ELSE trd_last_updt_dt END
     ) DESC ) AS line_number 
  FROM trdg_sym sym  
  WHERE ((wkly_rpt_dt = :settleDate)) AND ((lower(rpt_type_cd)=lower(:reportType)))
)  
WHERE line_number BETWEEN 1 AND 25 ORDER BY line_number
或者将子查询包装到另一个查询

SELECT * FROM 
(
  SELECT *, 
    row_number() over ( ORDER BY LatestUpdatedDate DESC ) AS line_number 
  FROM
  (
     SELECT sym.*, 
       (
          CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
          THEN shr_last_updt_dt 
          ELSE trd_last_updt_dt END
        ) AS LatestUpdatedDate 
     FROM trdg_sym sym  
     WHERE ((wkly_rpt_dt = :settleDate)) AND ((lower(rpt_type_cd)=lower(:reportType)))
   )
)  
WHERE line_number BETWEEN 1 AND 25 ORDER BY line_number

另外,我不确定oacle的语法是否正确,但您是否应该为子查询指定别名?

生成结果集后将指定别名,因此您不能在窗口函数中使用它们。您可以这样做:

SELECT * FROM 
( 
  SELECT sym.*, 
    (
    CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
    THEN shr_last_updt_dt 
    ELSE trd_last_updt_dt END
    ) AS LatestUpdatedDate,
    row_number() over ( ORDER BY 
     (
        CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
        THEN shr_last_updt_dt 
        ELSE trd_last_updt_dt END
     ) DESC ) AS line_number 
  FROM trdg_sym sym  
  WHERE ((wkly_rpt_dt = :settleDate)) AND ((lower(rpt_type_cd)=lower(:reportType)))
)  
WHERE line_number BETWEEN 1 AND 25 ORDER BY line_number
或者将子查询包装到另一个查询

SELECT * FROM 
(
  SELECT *, 
    row_number() over ( ORDER BY LatestUpdatedDate DESC ) AS line_number 
  FROM
  (
     SELECT sym.*, 
       (
          CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
          THEN shr_last_updt_dt 
          ELSE trd_last_updt_dt END
        ) AS LatestUpdatedDate 
     FROM trdg_sym sym  
     WHERE ((wkly_rpt_dt = :settleDate)) AND ((lower(rpt_type_cd)=lower(:reportType)))
   )
)  
WHERE line_number BETWEEN 1 AND 25 ORDER BY line_number

另外,我不确定oacle的语法是否正确,但您是否应该为子查询指定别名?

生成结果集后将指定别名,因此您不能在窗口函数中使用它们。您可以这样做:

SELECT * FROM 
( 
  SELECT sym.*, 
    (
    CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
    THEN shr_last_updt_dt 
    ELSE trd_last_updt_dt END
    ) AS LatestUpdatedDate,
    row_number() over ( ORDER BY 
     (
        CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
        THEN shr_last_updt_dt 
        ELSE trd_last_updt_dt END
     ) DESC ) AS line_number 
  FROM trdg_sym sym  
  WHERE ((wkly_rpt_dt = :settleDate)) AND ((lower(rpt_type_cd)=lower(:reportType)))
)  
WHERE line_number BETWEEN 1 AND 25 ORDER BY line_number
或者将子查询包装到另一个查询

SELECT * FROM 
(
  SELECT *, 
    row_number() over ( ORDER BY LatestUpdatedDate DESC ) AS line_number 
  FROM
  (
     SELECT sym.*, 
       (
          CASE WHEN shr_last_updt_dt >= trd_last_updt_dt 
          THEN shr_last_updt_dt 
          ELSE trd_last_updt_dt END
        ) AS LatestUpdatedDate 
     FROM trdg_sym sym  
     WHERE ((wkly_rpt_dt = :settleDate)) AND ((lower(rpt_type_cd)=lower(:reportType)))
   )
)  
WHERE line_number BETWEEN 1 AND 25 ORDER BY line_number

另外,我不确定oacle的语法是否正确,但您是否应该为子查询提供别名?

谢谢。你证实了我的想法。我有一个.NET应用程序正在构造查询,因此重新编写代码将需要大量工作。我能够通过遵循您概述的第一种方法使其工作,所以我会将此标记为正确答案。谢谢想象一下,您有两个具有相同列名的子查询,并且希望将它们联接起来。您将如何引用列?嘿,我想我也会尝试第二个查询,但它不起作用。你能再检查一次,确保它在你这边起作用吗?我收到一个来自关键字未找到的
错误,此处出现预期的
错误。谢谢。你证实了我的想法。我有一个.NET应用程序正在构造查询,因此重新编写代码将需要大量工作。我能够通过遵循您概述的第一种方法使其工作,所以我会将此标记为正确答案。谢谢想象一下,您有两个具有相同列名的子查询,并且希望将它们联接起来。您将如何引用列?嘿,我想我也会尝试第二个查询,但它不起作用。你能再检查一次,确保它在你这边起作用吗?我收到一个来自关键字未找到的
错误,此处出现预期的
错误。谢谢。你证实了我的想法。我有一个.NET应用程序正在构造查询,因此重新编写代码将需要大量工作。我能够通过遵循您概述的第一种方法使其工作,所以我会将此标记为正确答案。谢谢想象一下,您有两个具有相同列名的子查询,并且希望将它们联接起来。您将如何引用列?嘿,我想我也会尝试第二个查询,但它不起作用。你能再检查一次,确保它在你这边起作用吗?我收到一个来自关键字未找到的
错误,此处出现预期的
错误。谢谢。你证实了我的想法。我有一个.NET应用程序正在构造查询,因此重新编写代码将需要大量工作。我能够通过遵循您概述的第一种方法使其工作,所以我会将此标记为正确答案。谢谢想象一下,您有两个具有相同列名的子查询,并且希望将它们联接起来。您将如何引用列?嘿,我想我也会尝试第二个查询,但它不起作用。你能再检查一次,确保它在你这边起作用吗?我从关键字中得到一个
,未找到预期的
错误。