vertica中没有类似Oracle中的ws_concat函数功能,需要开发UDF,自己对C++不熟悉,所有只有想其他方法解决了。

上代码:

SELECT node_state,
MAX(DECODE(row_number, 1, a.node_name)) ||
NVL(MAX(DECODE(row_number, 2, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 3, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 4, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 5, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 6, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 7, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 8, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 9, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 10, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 11, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 12, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 13, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 14, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 15, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 16, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 17, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 18, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 19, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 20, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 21, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 22, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 23, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 24, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 25, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 26, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 27, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 28, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 29, ',' || a.node_name)), '') ||
NVL(MAX(DECODE(row_number, 30, ',' || a.node_name)), '') node_name
FROM (select node_state,node_name,row_number() over (partition by node_state order by node_name) row_number from nodes) a
group by node_state;``` 运行结果:

可以看到是我想要的结果。

有人会问了,我不知道自己要ws_concat几个类别怎么办,先运行一下

select node_state,node_name,row_number() over (partition by node_state order by node_name) row_number from nodes

看下row_number不就行了,或者把decode中的数字多写几个。当然最好的方法还是开发自定义程序包,引入到vertica中,直接使用函数实现,C++好的童鞋可以试一下。

Vertica的这些事(三)——Vertica中实现Oracle中的ws_concat功能的更多相关文章

  1. sql server中类似oracle中decode功能的函数

    sqlserver 2008 写法 select t.PROJECTNAME, t.BUILDCONTENTSCALE, CASE t.PROJECTLEVEL ' THEN '国家重点' ' THE ...

  2. 判断一个数据是否存在于一个表中,Oracle中写自定义函数

    create or replace function isExist(data in DataTypes) --DataTypes 为表中该数据的类型return Numberisv_flag num ...

  3. mysql中实现oracle中的rowid功能

    mysql中没有函数实现,只能自己手动添加变量递增  := 就是赋值,只看红色字体就行 select @rownum:=@rownum+1,img.img_path,sku.sku_name from ...

  4. 在JSP中获取oracle中的时间戳类型的字段并显示

    在oracle中有一种特殊的时间显示类型——Timestamp时间戳 通常我们将当前时间转化为时间戳的语法如下: select cast (sysdate as timestamp ) from du ...

  5. MySQL中建立Oracle中SCOTT数据示例

    1.创建 scott 数据库 CREATE DATABASE scott; 2.创建 scott 数据库中的 dept 表 CREATE TABLE dept( deptno INT UNSIGNED ...

  6. Mysql中类似于oracle中nvl()函数的ifnull()函数

    IFNULL(expr1,expr2)  如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2.IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境.  my ...

  7. MYSQL中替换oracle中runum用法

    一 . SELECT * FROM (SELECT A.*, rownum AS RN FROM (SELECT (@rownum := @rownum + 1) AS rownum, B.LL11, ...

  8. MySQL中模拟oracle中的rownum列

    mysql> select @rn := @rn + 1 as rownum, emp_no, dept_no, from_date, to_date -> from dept_emp, ...

  9. mysql中对应oracle中的to_char()和to_number()函数

    TO_CHAR(): CAST(123   AS   CHAR(3)) TO_NUMBER(): cast( '123 '   as   SIGNED   INTEGER)

随机推荐

  1. Flutter 拖拽控件Draggable看这一篇就够了

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 Draggable系列组件可以让我们拖动组件. Dragg ...

  2. 01 极简Linux操作系统发展历史

    Unix操作系统的诞生 1965 年之前的时候,电脑并不像现在一样普遍,它可不是一般人能碰的起的,除非是军事或者学院的研究机构,而且当时大型主机至多能提供30台终端(30个键盘.显示器),连接一台电脑 ...

  3. gitbook 入门教程之超高颜值的思维导图simple-mind-map插件

    欢迎访问 gitbook-plugin-simple-mind-map 官网

  4. React hooks详解

    此篇文章仅是对hooks入门的总结,老鸟略过吧~ React从16.8.X以后增加了一个新特性,react hooks 让我们看看这个新特性又带来了哪些惊喜呢~以下内容我们采取不同方式创建组件来进行对 ...

  5. .NET 开发工具盘点和现状

    在这里我盘点一下.NET的开发工具:Visual Studio.Jetbrains Rider.Mono Develop.SharpDevelop.QuickSharp.Visual Studio C ...

  6. 建议10:建议使用splice删除数组

    删除数组元素的方法有很多种,最简单就是利用length属性来截断数组,但这种方法比较笨,进能够截断尾部元素.在JS中,由于数组其实就是对象,因此可以使用delete运算符可以从数组中移除元素 var ...

  7. 由国产性能测试工具WEB压力测试仿真能力对比让我想到的

    软件的行业在中国已得到长足的发展,软件的性能测试在软件研发过程显得越来越重要.国产的性能工具在好多大公司都在提供云服务的有偿收费测试.如:阿里的PTS(Performance Testing Serv ...

  8. vscode回车补全代码

    VsCode设置回车补全代码而不换行 有一部分人不习惯用tab键补全代码,我就是其中之一,习惯了回车补全的我决定设置一波,网上找了很多, 没找到比较详细的,所以自己写一个 有一个叫keybinding ...

  9. 常用的API和基础算法

    和数学相关 1,java.lang.Math类 abs(x):求绝对值 sqrt(x):求平方根 pow(x,y):求x的y次方 ceil(x):向上取整 floor(x):向下取整 round(x) ...

  10. for循环与串行化、并行化Stream流性能对比

    第四章 并行化Stream流 关注公众号(CoderBuff)回复"stream"获取<Java8 Stream编码实战>PDF完整版. <Java8 Strea ...