【问题标题】:Order rows of result set except for one row in Redshift对结果集的行进行排序,但 Redshift 中的一行除外
【发布时间】:2019-08-07 05:10:25
【问题描述】:

我需要对 select 语句中的结果集进行排序,并使用 union all 作为 order by,将第一个 select 语句分开,union all 语句分开。

这是我要求的示例查询。

CREATE TEMPORARY TABLE tempa 
(
  value   INT
);

INSERT INTO tempa
(
  value
)
SELECT 1;

INSERT INTO tempa
(
  value
)
SELECT 2;

INSERT INTO tempa
(
  value
)
SELECT 4;



SELECT *
FROM (SELECT * FROM tempa ORDER BY 1)
UNION ALL
SELECT 3 AS value ORDER BY 1;

这里结果显示为

1
2
3
4

我需要按如下方式对结果集进行排序:

1
2
4
3

值为 3 的行在末尾合并,因此我希望将该值与前面的语句分开排序。

谢谢

【问题讨论】:

    标签: sql-order-by amazon-redshift


    【解决方案1】:

    您可以在联合查询中引入计算列:

    SELECT value
    FROM
    (
        SELECT value, 1 AS posititon FROM tempa
        UNION ALL
        SELECT 3, 2
    ) t
    ORDER BY position, value;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 2013-10-13
      • 2020-01-27
      相关资源
      最近更新 更多