重新对齐数据集,使不同时期出现在同一行

Re-aligning dataset so that different period appear on the same row

我有三个不同[时期]的每个实体数据。它们是:2022-03-31、2021-09-30 和 2021-03-31

我想更改数据集并有

2022-03-31  AS [curr_period], 2021-09-30 AS [prev_period] and 2021-03-31 AS [prev2_period].

这可以通过 case 语句轻松完成。

问题是,我希望数据对齐,这样 [entity] 就会出现,然后出现在同一行 [curr_period]、[prev_period]、[prev2_period]

如何实现?

行(结束)?但我不认为它实际上会做我想做的事。 还有什么方法?

当你说改变数据库时,你的意思是为这个实体创建一个新的 table 还是你只是想有一个 select 查询? 您是否确切知道这些日期,或者您是否还需要按日期对它们进行排序并获得第一、第二和第三?

如果您确实知道这些日期并且它们不会改变,那么您为什么要像这样 hard-coded 使用它们

SELECT entity, '2022-03-31'  AS [curr_period], '2021-09-30' AS [prev_period], '2021-03-31' AS [prev2_period]
FROM entities
Group by entity

我可能遗漏了一些东西,但没有示例数据很难确定。

这对我来说没有 hard-coded 日期。

SELECT e1.entity, 
e1.date AS [curr_period], 
e2.date AS [prev_period], 
e3.date AS [prev2_period]
FROM entities e1
join entities e2 on e2.entity = e1.entity and e1.date > e2.date
join entities e3 on e3.entity = e1.entity and e2.date > e3.date
order by e1.entity, e1.date desc