当前位置: 首页 > 知识库问答 >
问题:

当first_value由于varchar值的大小而引发错误时,可供选择的first_value/解决方案

邓季
2023-03-14
SELECT 
ID,
FIRST_VALUE(User) over (partition by id order by date) as firstUser,
FIRST_VALUE(Comment) over (partition by id order by date) as FirstComment,
FIRST_VALUE(User) over (partition by id order by date desc) as lastUser,
FIRST_VALUE(Comment) over (partition by id order by date desc) as LastComment
from table;

前。

- ID | User | Date | Comment
- 1 | user1 | 2019/06/25 | comment1
- 1 | user2 | 2019/06/26 | comment2

预期结果

- ID | firstUser | FirstComment | lastUser | lastComment  
 1 | user1 | comment1 | user2 | comment2

共有1个答案

孙梓
2023-03-14

我认为你不应该犯这样的错误。

但是,如果是这种情况,并且您希望采用其他方法,那么下面是为您编写的代码:

-- I have used || as a separator.. You can use your own separator, if needed
WITH DATAA (ID1,USER1,DATE1,COMMENT1) AS
(SELECT 1, 'USER1',DATE '2019-06-25','comment1' FROM DUAL UNION ALL
SELECT 1, 'USER2',DATE '2019-06-26','comment2' FROM DUAL)
SELECT
    ID1,
    REGEXP_SUBSTR(USER1, '[^(||)]+') AS FIRSTUSER,
    REGEXP_SUBSTR(COMMENT1, '[^(||)]+') AS FIRSTCOMMENT,
    REGEXP_SUBSTR(USER1, '[^(||)]+$') AS LASTUSER,
    REGEXP_SUBSTR(COMMENT1, '[^(||)]+$') AS LASTCOMMENT
FROM
    (
        SELECT
            ID1,
            RTRIM(XMLAGG(XMLELEMENT(E, USER1, '||').EXTRACT('//text()')
                ORDER BY
                    DATE1
            ).GETCLOBVAL(), '||') AS USER1,
            RTRIM(XMLAGG(XMLELEMENT(E, COMMENT1, '||').EXTRACT('//text()')
                ORDER BY
                    DATE1
            ).GETCLOBVAL(), '||') AS COMMENT1
        FROM
            DATAA
        GROUP BY
            ID1
    );

db<>小提琴演示

 类似资料:
  • 本文向大家介绍Django 解决由save方法引发的错误,包括了Django 解决由save方法引发的错误的使用技巧和注意事项,需要的朋友参考一下 最近项目中的资产的任务状态频频出现问题,查看日志文件,看代码逻辑,也没发现什么具体的错误,总是过段时间就会出现一个表的字段没有更新的问题,很头疼。 开始时,觉得是没有添加事务,所以同时更新两个不同的表,其中一个表的内容没有写进去;加了事务后,又出现这种

  • 问题内容: 我有一个用于应用程序的web.xml。 部署时出现以下错误 不确定我是否完全理解该错误。我看到它希望我在那里声明会话超时。我会尝试的.. 问题答案: 在被介绍在的Servlet 3.0 和老版本如2.5不支持。您被声明符合Servlet 2.5。 您有2个选择: 重新声明符合Servlet 3.0(隐式还要求兼容Servlet 3.0的目标容器,例如Tomcat 7,Glassfish

  • 问题内容: 我正在使用。 我得到的正确值,即最大日期。 但是对于我来说,当我真的想要第三条记录(具有最大日期值的记录)中的“ ta3”值时,只需获取第一条记录的值即可,即“ ta1”。 例如 问题答案: 您需要GROUP BY子句或更复杂的查询。 对于示例数据,这将返回3行。 您更有可能想要: 对于示例数据,这将返回1行: 在主要的DBMS中,当select-list中包含聚合列和非聚合列的混合时

  • 本文向大家介绍SqlServer2012中First_Value函数简单分析,包括了SqlServer2012中First_Value函数简单分析的使用技巧和注意事项,需要的朋友参考一下 First_Value返回结果集中某列第一条数据的值,跟TOP 1效果一样,比较简单的一个函数 先贴测试用代码 下边使用FIRST_VALUE函数,创建一列新列,返回结果集中第一行的LastName值,这个所谓的

  • 我的HTML是这样的 组织。openqa。硒。InvalidSelectorException:给定的选择器//输入[@type=checkbox]/以下同级:://td[contains(text(),template]无效或未生成WebElement。出现以下错误:InvalidSelectorError:无法找到xpath表达式为//input[@type=checkbox]/以下同级的元素

  • 问题内容: 我在带有IGNORE NULLS参数的Vertica的FIRST_VALUE()分析函数中看到意外的行为。它似乎不应该返回NULL。 问题出现在这个很小的表中: 这是表的内容(从临时表中选择*): 这是我正在运行的查询: 以下是此查询返回的结果: 这是我从此查询中期望(和期望)的结果: 上面的查询是否有一个非常基本的语法错误?在Vertica Community Edition 7.1