vertica和oracle,Vertica的这些事(三)——Vertica中实现Oracle中的ws_concat功能

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++好的童鞋可以试一下。

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

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

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

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

mysql中实现oracle中的rowid功能

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

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

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

MySQL中建立Oracle中SCOTT数据示例

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

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

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

MYSQL中替换oracle中runum用法

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

MySQL中模拟oracle中的rownum列

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

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

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

随机推荐

ios coredata 无任何错误提示crash

最近写程序是遇到了一种情况,对coredata 操作时,有一定几率crash,crash时无任何说明,断点调试后发现,fetch出的对象的属性竟然和数据库中的不同,不知道什么情况下导致了context ...

jQuery取复选框值、下拉列表里面的属性值、取单选按钮的属性值、全选按钮、JSON存储、*去空格

1.jquery取复选框的值

From : http://www.cnblogs.com/miniwiki/archive/2010/06/18/1760540.html 文章系参考转载,英文原文网址请参考:http://www. ...

iOS 七大手势之轻拍,长按,旋转手势识别器方法

一.监听触摸事件的做法   如果想监听一个view上面的触摸事件,之前的做法通常是:先自定义一个view,然后再实现view的touches方法,在方法内部实现具体处理代码 通过touches方法监听 ...

高校表白APP-冲刺第一天

今天我们开了第一次会议, 一.任务: 今日任务布局登录页面,注册页面,修改密码界面 明日任务完成基本的登录页面框架 二.遇到的困难: 布局文件里的一些标签,用法不清楚,页面跳转都得学习.

Https,Http,TCP,IP的一些理解

网络模型分为7层,应用层,表现层,会话层,传输层,网络层,链路层,物理层,每一层有很多不同的协议. http:属于应用层的协议,负责的是数据以什么结构传输也可以说成是打包成什么样子 SSL/TLS:属 ...

pwnable.kr详细通关秘籍(二)

i春秋作家:W1ngs 原文来自:pwnable.kr详细通关秘籍(二) 0x00 input 首先看一下代码: 可以看到程序总共有五步,全部都满足了才可以得到flag,那我们就一步一步来看 这道题考 ...

BZOJ1901Zju2112 Dynamic Rankings——树状数组套主席树

题目描述 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1 ],a[i+2]……a[j]中第k小的数是多少(1≤k ...

git初始化本地项目并推送到git服务器

1.创建本地项目,在项目根目录执行git init命令 git init 2.在git服务器上创建一个仓库,这里使用GitHub创建一个仓库. 3.执行git remote add origin &l ...

CentOS6.7-64bit编译spark-1.6.1和spark-1.3.1

编译spark-1.6.1 tar -zxvf spark-1.6.1.tgz -C /usr/local/src/ cd /usr/local/src/spark-1.6.1/ #设置内存2G ex ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值