重新对齐数据集,使不同时期出现在同一行
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
我有三个不同[时期]的每个实体数据。它们是: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