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. 关于使用fastjson出现的问题:com.alibaba.fastjson.JSONException: syntax error, expect {, actual string, pos 1, fastjson-version 1.2.44

    先说下需求:是从redis中根据keys批量获取数据集合,再通过fastjson转为对象集合 代码如下: 在postman测试后,出现错误如下: 刚开始以为是使用fstjson方法不对,后面先通过打断 ...

  2. Hibernage错误:Could not open Hibernate Session for transaction

    今天客户发来的错误,是SSH框架做的项目,是用户在登陆时候出现的错误,但刷新之后就没问题. 提示错误:Could not open Hibernate Session for transaction. ...

  3. 【vue生命周期】- 详解

    这篇文章通俗易懂,写的不错,本文转载至:https://www.cnblogs.com/happ0/p/8075562.html 详解Vue Lifecycle 先来看看vue官网对vue生命周期的介 ...

  4. Core + Vue 后台管理基础框架7——APM

    1.前言 APM,又称应用性能统计,主要用来跟踪请求调用链,每个环节调用耗时,为我们诊断系统性能.定位系统问题提供了极大便利.本系统采用的是Elastic Stack体系中的APM,主要是之前部门搞P ...

  5. 在d盘创建文件夹,里面有aaa.txt/bbb.txt/ccc.txt,然后遍历出aaa文件夹下的文件(新手)

    //导入的包.import java.io.File;import java.io.IOException;//创建的一个类.public class zy { //公共静态的主方法. public ...

  6. 多线程的CAS

    CAS Compare And Swap (Compare And Exchange) / 自旋 / 自旋锁 / 无锁 独占锁:独占锁是一种悲观锁,synchronized就是一种独占锁,会导致其它所 ...

  7. Natas4 Writeup(Referer篡改)

    Natas4: 提示来源出错,合法用户只能来自"http://natas5.natas.labs.overthewire.org/". 在http的header中,referer代 ...

  8. Journal of Proteome Research | Mining the Proteome Associated with Rheumatic and Autoimmune Diseases(挖掘风湿和自身免疫疾病相关的蛋白组)(解读人:黄旭蕾)

    期刊名:JPR 发表时间:(2019年12月) IF:3.780 单位:Grupo de Investigación de Reumatología (GIR), Unidad de Proteó ...

  9. spring容器概述

    这篇博客写一下对spring和springmvc父子容器的理解. 一.首先明确: (1)spring是一个大的父容器,springmvc是其中的一个子容器.父容器不能访问子容器对象,但是子容器可以访问 ...

  10. 报错:Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'gender' at row 1

    我遇到这个错误是解决办法:我修改了对应的数据库字段的长度:原本我设置的是char型,但是存进去的是一个string型,结果就报了这个报了这个错误 下面就是数据库修改之后的结果. 以上都是我学习过程中遇 ...