数据库

 首页 > 数据库 > MySql > QlikView中实现SQL Server中的RowNumber() Over(Partition by)

QlikView中实现SQL Server中的RowNumber() Over(Partition by)

分享到:
【字体:
导读:
         摘要:经常有这样的需求,当A字段有很多重复的值,但是B字段中的值在按A字段分组后是唯一的,因此SELECT A, B字段的时候不知道取B字段中的哪个值,因此在A字段重复的时候想取B字段的值,需要根据C字段中最大最小的值所对应的那一行数据。在SQL Server 里面可以用如下方式实现,Row_Number() Over(Pa...

QlikView中实现SQL Server中的RowNumber() Over(Partition by)

经常有这样的需求,当A字段有很多重复的值,但是B字段中的值在按A字段分组后是唯一的,因此SELECT A, B字段的时候不知道取B字段中的哪个值,因此在A字段重复的时候想取B字段的值,需要根据C字段中最大最小的值所对应的那一行数据。

在SQL Server 里面可以用如下方式实现,Row_Number() Over(Partition by A Order by C) ID,然后取ID=1。

 

在QlikView中可以用如下方式实现:

数据准备如下:

Sales:
LOAD
	Num(SalesManID) as SalesManID,
	Num(ManagerID) as ManagerID,
	Date(Date) as Date
Inline [
SalesManID, ManagerID, Date
21, 190, 2013-05-06
21, 201, 2014-05-06
22, 652, 2013-05-06
23, 813, 2013-05-06
23, 915, 2014-01-06
23, 961, 2014-05-06
];


Sales表中SalesManID是销售员ID, 在不同时期SalesManID对应不同的ManagerID,按照需求应该取得销售员最近所属的ManagerID。

SaleHierarchy:
LOAD
	SalesManID,
	If(Peek("SalesManID")=SalesManID, Peek("RowNumber") + 1, 1) as RowNumber,
	ManagerID,
	Date
Resident
	Sales
Order By
	SalesManID,
	Date desc;

DROP Table Sales;


备注:一定要Order By SalesManID和Date两个字段。

 

如上图所示,取RowNumber=1就是想要的结果。

因此代码可以写成这样:

SaleHierarchy:
LOAD
	SalesManID,
	If(Peek("SalesManID")=SalesManID, Peek("RowNumber") + 1, 1) as RowNumber,
	ManagerID,
	Date
Resident
	Sales
Where
	If(Peek("SalesManID")=SalesManID, Peek("RowNumber") + 1, 1)=1
Order By
	SalesManID,
	Date desc;

DROP Table Sales;

 


假如不清楚如何使用Peek请看帮助或留言交流。

QlikView中实现SQL Server中的RowNumber() Over(Partition by)
分享到:
linux/centos oracle10g控制连接IP地址
linux/centos oracle10g控制连接IP地址oracle控制连接数据库的ip地址 单纯的设定允许的IP和禁止的IP 在9i及以后中,修改sqlnet.ora其实是最好最快的方法 1:修改sqlnet.ora文件 在linux版本的oracle中,默认是没有sqlnet.ora这个文件的 $ cd $ORACLE_HOME/network/admin $ vi sqlnet.ora #增加如下部分  tcp.validnode_che...
参数文件spfile的修改以及数据库的启动关...
参数文件spfile的修改以及数据库的启动关闭由于参数文件spfile是二进制文件,所以不能直接使用文本编辑器进行修改,我们可以再启动数据库以后使用sql命令进行修改: alter system 参数名=参数值, scope=both|spfile|memory sid=*|’orcl’ 等,其中具体的权威参数请参考官方文档   1 修改processes 这个参数不能...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……