如何在ROW_NUMBER()函数和Union中获取过滤器记录? [英] How to Get Filter record in ROW_NUMBER() function and Union?

查看:120
本文介绍了如何在ROW_NUMBER()函数和Union中获取过滤器记录?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Union Query用于从表中获取结果。当只有第一个查询执行那个时候这个工作正常但如果在第二个(联合部分)也返回结果那个时间它将不起作用。我的查询如

选择*从(
选择ROW_NUMBER()OVER(ORDER BY EmpID DESC)为RowNo,
Emp.EMPID,EMP.FirstName
来自Emp
Union
选择ROW_NUMBER()OVER(ORMP BY EMPID DESC)为RowNo,
Emp.EMPID,EMP.FirstName
来自Emp Inner加入EMPDetail On Emp.EmpID = EMPDetail.EMPID
其中EMPDetail.IsActive = True
)作为_EmpTable,其中RowNo在1到20之间





请帮我这个。我想使用行号添加分页。有没有其他解决方案呢?

解决方案

你好Savalia,



这个脚本会显示错误信息

不明确的专栏名称'EMPID'。



我已更正你的剧本

  SELECT  *  FROM 
SELECT ROW_NUMBER() OVER ORDER BY EmpID DESC as RowNo,Emp.EMPID,EMP.FirstName
From Emp
UNION
SELECT ROW_NUMBER() OVER ORDER BY Emp。 EMPID DESC as RowNo,Emp.EMPID,EMP.FirstName
FROM Emp 内部 加入 EMPDetail 开启 Emp.EmpID = EMPDetail.EMPID
< span class =code-keyword> WHERE EMPDetail.IsActive = True

AS _EmpTable WHERE RowNo 1 20


这样,

< pre lang =sql>
选择 *
选择
ROW_NUMBER() OVER ORDER BY EmpID DESC as RowNo,
Emp.EMPID,
EMP.FirstName
from

选择 Emp.EMPID,EMP.FirstName
来自 Emp
联盟
选择 Emp.EMPID,EMP.FirstName
< span class =code-keyword> From
Emp
内部 加入 EMPDetail On Emp.EmpID = EMPDetail.EMPID
其中 EMPDetail.IsActive = True
as _EmpTable
as a 其中 RowNo 1 20



快乐编码!

:)

I have one Union Query for getting result from table. When only first query execute that time this working fine but if in second(union part) also return result that time it will not work. My query like

Select * from (
Select  ROW_NUMBER() OVER(ORDER BY EmpID DESC) as RowNo,
    Emp.EMPID, EMP.FirstName
    From Emp
Union
Select ROW_NUMBER() OVER(ORDER BY EMPID DESC) as RowNo,
    Emp.EMPID, EMP.FirstName
    From Emp Inner Join EMPDetail On Emp.EmpID = EMPDetail.EMPID 
    Where EMPDetail.IsActive=True
    ) as _EmpTable where RowNo between 1 and 20



Please help me for this. I want to add paging using Row number. is there any other solution for this?

解决方案

Hi Savalia,

This script will show error message
Ambiguous column name 'EMPID'.

I have corrected your script

SELECT * FROM (
	SELECT  ROW_NUMBER() OVER(ORDER BY EmpID DESC) as RowNo,Emp.EMPID, EMP.FirstName
	From Emp
UNION
	SELECT ROW_NUMBER() OVER(ORDER BY Emp.EMPID DESC) as RowNo,Emp.EMPID, EMP.FirstName
	FROM Emp Inner Join EMPDetail On Emp.EmpID = EMPDetail.EMPID 
	WHERE EMPDetail.IsActive=True
			) 
AS _EmpTable WHERE RowNo between 1 and 20


this way,

Select * from
(
    Select 
    ROW_NUMBER() OVER(ORDER BY EmpID DESC) as RowNo,
    Emp.EMPID, 
    EMP.FirstName
    from 
    (
            Select Emp.EMPID, EMP.FirstName
            From Emp
            Union
            Select Emp.EMPID, EMP.FirstName
            From Emp 
            Inner Join EMPDetail On Emp.EmpID = EMPDetail.EMPID
            Where EMPDetail.IsActive=True
    ) as _EmpTable 
) as a where RowNo between 1 and 20


Happy Coding!
:)


这篇关于如何在ROW_NUMBER()函数和Union中获取过滤器记录?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆