oracle 使用UNION在SQL Select的末尾添加一行

kqlmhetl  于 2023-08-04  发布在  Oracle
关注(0)|答案(3)|浏览(149)

我使用一些过滤器在记录中创建了一个视图,并且必须添加仅包含来自另一个表的ID和SQL结果末尾的特定行的行。
所以预期的结果是这样的:

Column 1 | Column 2 | Column 3 | Column4
1   0001     | 565      | AM1      | DR01
.
.
59  TEST1    |          |          |
60  NON_IMMO |          |          |

字符串
第59行是第二个表中的id,第60行是specifix行。我的查询是这样的:

SELECT DISTINCT a.asset_id 
 , a.serial_id 
 , a.VIN 
 , b.project_id 
  FROM ps_asset a 
 WHERE --Some conditions  
  UNION 
 SELECT PO_GROUP_ID 
 ,' ' 
 , ' ' 
 , ' ' 
  FROM PS_PO_GROUP_TBL 
  UNION 
 SELECT 'NON_IMMO' 
 ,' ' 
 ,' ' 
 ,' ' 
  FROM dual


但问题是,我不能在最后得到特定的行。
我觉得像SGBD显示2工会按字母顺序。

Column 1 | Column 2 | Column 3 | Column4
1   0001     | 565      | AM1      | DR01
.
.
59  NON_IMMO |          |          |
60  TEST1    |          |          |


谢谢你的帮助。

ulmd4ohb

ulmd4ohb1#

将最后一个UNION更改为UNION ALL,以跳过重复项的消除(这是对行排序的副作用)。应该够了。。

...
FROM PS_PO_GROUP_TBL 
UNION ALL
SELECT 'NON_IMMO' 
...

字符串

z5btuh9x

z5btuh9x2#

工会不会强迫在记录上下命令。您需要另一个false第5列,以确保数据到最后。参见示例

SELECT COLUMN1
FROM
(
SELECT COLUMN1, 0 ORDER_BY FROM TABLE1
UNION
SELECT 'FOOTER' COLUMN1, 1 ORDER_BY FROM DUAL
)
ORDER BY ORDER_BY

字符串
此外,如果您的数据可能与末尾的内容匹配,则需要使用UNION ALL来确保记录仍然被添加。

6ojccjat

6ojccjat3#

您的查询将变为:
您必须将查询 Package 在一个主查询中,在该主查询中可以应用全局ORDER BY
第二个:我删除了DISTINCT,因为UNION删除了重复项

SELECT asset_id, serial_id, vin, project_id
FROM
(SELECT a.asset_id, a.serial_id,
    a.VIN, b.project_id 
FROM ps_asset a 
WHERE --Some conditions  
UNION 
SELECT PO_GROUP_ID, ' ', ' ', ' ' 
FROM PS_PO_GROUP_TBL 
UNION 
SELECT 'NON_IMMO', ' ', ' ', ' '  
FROM dual)
ORDER BY serial_id

字符串

相关问题