首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于报告SCD的Server订单

用于报告SCD的Server订单
EN

Stack Overflow用户
提问于 2016-04-14 19:36:17
回答 2查看 17关注 0票数 0

我有一个缓慢变化的维度的桌子,我需要从它报告。

它有3列: EmpId,工资,StartDate

代码语言:javascript
复制
EmpId, Salary, StartDate
1, 1000, 2016-04-14
2, 3000, 2016-03-13
1, 900, 2016-01-14
3, 4000, 2016-03-14
1, 700, 2011-04-14
2, 2000, 2015-03-14
2, 1000, 2014-03-14

我需要按日期按顺序显示它们,但要将Emp ID保存在一起,例如:

代码语言:javascript
复制
EmpId, Salary, StartDate
1, 1000, 2016-04-14
1, 900, 2016-01-14
1, 700, 2011-04-14
3, 4000, 2016-03-14
2, 3000, 2016-03-13
2, 2000, 2015-03-14
2, 1000, 2014-03-14

Order by条款是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-14 19:47:50

代码语言:javascript
复制
SELECT  *
FROM    (
        SELECT  *,
                MAX(startDate) OVER (PARTITION BY empId) maxDate
        FROM    mytable
        ) q
ORDER BY
        maxDate DESC, empId, startDate DESC
票数 0
EN

Stack Overflow用户

发布于 2016-04-14 19:51:04

您可以尝试以下查询

代码语言:javascript
复制
select temp.* from temp 
left join 
( select EmpId, max(startdate) r from temp group by EmpID) t
on temp.Empid=t.empid
order by r desc

这里的SQL演示

解释:我们首先需要在每个EmpID上找到最大开始日期,然后按desc顺序对所有员工集进行排序。在每一组中,我们都会按日期重新排序。

在上述查询中

代码语言:javascript
复制
(select EmpId, max(startdate) r from temp group by EmpID) 

提供每个员工的最高日期以及该日期的级别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36632389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档