Rag*_*Pwn 0 sql rank sql-server-2008-r2
我试图根据过去 18 个月内的访问次数将客户与“首选”商家联系起来,决胜局是最近的访问日期。我在决胜局方面遇到了一些麻烦。如果有两条记录根据某个 MemberID 的访问次数均排名第 1,我想将该 MemberID 的记录上的 IsFirst 位列设置为 1。我该怎么做呢?
这可能会帮助你...这是基于现有 emp 表的 Oracle 查询。我认为在发布问题时创建结构是个好主意。将第一个选择替换为更新等...:更新您的表设置您的日期= max_date(在我的示例中为max_hire_date)WHERE your_field IN(在我的示例中选择最大日期)AND rnk = 1和rno = 1
SELECT * FROM
(
SELECT deptno
, ename
, sal
, RANK() OVER (PARTITION BY deptno ORDER BY sal desc) rnk
, ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY sal desc) rno
, MAX(hiredate) OVER (PARTITION BY deptno ORDER BY deptno) max_hire_date
FROM emp_test
WHERE deptno = 20
ORDER BY deptno
)
WHERE rnk = 1
--AND rno = 1 -- or 2 or any other number...
/
SQL>
DEPTNO ENAME SAL RNK RNO HIREDATE MAX_HIRE_DATE
-----------------------------------------------------------
20 SCOTT 3000 1 1 1/28/2013 1/28/2013
20 FORD 3000 1 2 12/3/1981 1/28/2013
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26169 次 |
| 最近记录: |