Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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
Oracle SQL-最终获取记录_Sql_Oracle_Oracle11g - Fatal编程技术网

Oracle SQL-最终获取记录

Oracle SQL-最终获取记录,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我使用上述方法检索“zzzz”作为表的最后一条记录。但我不认为这会一直奏效,因为理论上这个城市可能比字母“zzzz”更大。是否有其他可靠的方法将此harcoded记录作为最后一条记录?。我需要这个来使用oracle reports进行报告。任何帮助都是非常受欢迎的。正如其他人(在评论和回答中)所说的,可能有更好的方法从一开始就解决问题;但如果你需要一个临时的黑客阅读 您可以随意调用最后一条记录… “zzzz”很好… 然后使用自定义的按排序,如: SELECT * FROM ( SELECT ci

我使用上述方法检索“zzzz”作为表的最后一条记录。但我不认为这会一直奏效,因为理论上这个城市可能比字母“zzzz”更大。是否有其他可靠的方法将此harcoded记录作为最后一条记录?。我需要这个来使用oracle reports进行报告。任何帮助都是非常受欢迎的。

正如其他人(在评论和回答中)所说的,可能有更好的方法从一开始就解决问题;但如果你需要一个临时的黑客阅读

您可以随意调用最后一条记录…
“zzzz”很好…
然后使用自定义的按排序,如:

SELECT * FROM
(
SELECT city from addr_tab
UNION ALL
SELECT 'zzzz' AS city from dual
)ORDER BY city
嗯,正如其他人所说(在评论和回答中),可能有更好的方法从一开始就解决这个问题;但如果你需要一个临时的黑客阅读

您可以随意调用最后一条记录…
“zzzz”很好…
然后使用自定义的按排序,如:

SELECT * FROM
(
SELECT city from addr_tab
UNION ALL
SELECT 'zzzz' AS city from dual
)ORDER BY city

添加另一个虚拟列(order\u col)以用于排序。 查询的结果如下

SELECT * 
  FROM (
       SELECT city 
         FROM addr_tab
       UNION ALL
       SELECT 'zzzz' AS city 
         FROM dual
       )
ORDER BY 
    CASE WHEN city = 'zzzz' THEN 1 ELSE 0 END,
    city;

通过这种方式,您可以保证“zzzz”始终是最后一个,因为主排序列(order\u col)的“zzzz”值保证低于所有其他记录的值。

添加另一个虚拟列(order\u col)用于排序。 查询的结果如下

SELECT * 
  FROM (
       SELECT city 
         FROM addr_tab
       UNION ALL
       SELECT 'zzzz' AS city 
         FROM dual
       )
ORDER BY 
    CASE WHEN city = 'zzzz' THEN 1 ELSE 0 END,
    city;

通过这种方式,您可以保证“zzzz”始终是最后一个,因为主排序列(order\u col)的“zzzz”值保证低于所有其他记录的值。

这也可以通过以下查询来解决

SELECT * FROM
(
SELECT city, 1 as order_col from addr_tab
UNION ALL
SELECT 'zzzz', 2 as order_col AS city from dual
)ORDER BY order_col, city
现在又有了一种风格

 SELECT * FROM 
 ( SELECT city from addr_tab order by city)
   UNION ALL 
  SELECT 'zzzz' from dual;

所以任何一个你可以用的

这也可以通过以下查询来解决

SELECT * FROM
(
SELECT city, 1 as order_col from addr_tab
UNION ALL
SELECT 'zzzz', 2 as order_col AS city from dual
)ORDER BY order_col, city
现在又有了一种风格

 SELECT * FROM 
 ( SELECT city from addr_tab order by city)
   UNION ALL 
  SELECT 'zzzz' from dual;

所以任何一个你可以用的

这是一种黑客行为,在过去造成了像Y2K问题这样的问题。别这样!如果那不是一个真正的城市,不要把这些数据放在那张表中——把它移到别的地方。或者是到另一个表,或者是专门为此数据构建的表,或者甚至是数据库之外的表。或者城市不应该成为这个表格的一列。@罗宾·格林:谢谢你的评论。我理解你的担心。城市专栏只是一个例子。正如我在问题中所说的,我正在用这个来报告。不幸的是,我无法控制数据模型,因为它已经由其他人创建。我希望我能在报告中做些什么(重新设计布局或做些什么),但不管怎么说,我可能只是使用了一个快速而肮脏的解决方案这是一种黑客行为,在过去造成了像Y2K问题这样的问题。别这样!如果那不是一个真正的城市,不要把这些数据放在那张表中——把它移到别的地方。或者是到另一个表,或者是专门为此数据构建的表,或者甚至是数据库之外的表。或者城市不应该成为这个表格的一列。@罗宾·格林:谢谢你的评论。我理解你的担心。城市专栏只是一个例子。正如我在问题中所说的,我正在用这个来报告。不幸的是,我无法控制数据模型,因为它已经由其他人创建。我希望我能在报告中做些什么(重新设计布局或做些什么),但不管怎么说,我可能只是使用了一个快速而肮脏的解决方案谢谢亚当·伯尼尔。这可能只适用于当前任务。谢谢Adam Bernier。这可能只适用于当前任务。