【问题标题】:Create a artificial primary key / artificial column inside an SELECT-Statement (Oracle database)在 SELECT 语句(Oracle 数据库)中创建人工主键/人工列
【发布时间】:2023-02-09 23:04:36
【问题描述】:

我有一个看起来像这样的 SQL 语句:

SELECT 
    x, AVG(y) AS z
FROM 
    table
UNPIVOT
    (y FOR x
       IN ("COLUMN1" AS 'A',
           "COLUMN1" AS 'B',
           "COLUMN2" AS 'C',
           "COLUMN3" AS 'D',
           "COLUMN4" AS 'E',
           "COLUMN5" AS 'F',
           "COLUMN6" AS 'G'))
GROUP BY 
    x;

是否有可能为 SELECT 语句中的每一行创建一个人工键?我无法添加表的 ID,因为那样我也必须将它添加到 group by 子句中,并且输出将与之前的输出不同......

基本上我需要在我的选择输出中添加一个唯一的数字列。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    我没有 Oracle 服务器来测试它,但像这样的东西应该可以工作:

    SELECT 
        ROW_NUMBER() OVER(ORDER BY NULL) AS id_num,
        x, AVG(y) AS z
    FROM 
        table
    UNPIVOT
        (y FOR x
           IN ("COLUMN1" AS 'A',
               "COLUMN1" AS 'B',
               "COLUMN2" AS 'C',
               "COLUMN3" AS 'D',
               "COLUMN4" AS 'E',
               "COLUMN5" AS 'F',
               "COLUMN6" AS 'G'))
    GROUP BY 
        x;
    

    【讨论】:

    • 是的,它有效。谢谢!
    • @dnlsdw 欢迎来到 StackOverflow!不要忘记接受答案,并为任何有帮助的答案点赞。
    猜你喜欢
    • 2020-01-28
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多