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