【发布时间】:2022-01-15 04:07:07
【问题描述】:
我有一个这样的表,叫做 DWH_DATA:
DATETIME FK_FEDERAL_STATE FK_ACCOMODATION ARRIVALS NIGHTS
--------------- -------------------- --------------- ---------- ----------
200010 W96-7 61 2433 16111
200011 W96-9 86 3718 30319
200012 W96-3 87 1100 8487
200101 W96-2 998 239 1038
附加信息日期时间 = 前四个数字 = 年份 + 后两个数字 = 月份
然后我有一个表 DWH_FEDERAL_STATES:
CODE(PK) NAME
---------- -------------------
W96-2 Country 2
W96-3 Country 3
W96-9 Country 9
W96-7 Country 7
现在我想为每个联邦州获得所有夜晚。结果应如下所示:
Country 2 Country 3 Country 9 Country 7
200010 6979 16111
200011 ..
200012 ..
200101 ..
我已经尝试过的是 PIVOT 语句:
SELECT * FROM
(
SELECT
DATETIME,
NIGHTS,
dwh_data.fk_federal_state As federalState
FROM
dwh_data JOIN DWH_FEDERAL_STATES
ON dwh_data.fk_federal_state = dwh_federal_states.code
) t
PIVOT(
COUNT(federalState)
FOR federalState IN ('Country 2','Country 3','Country 9')
) ORDER BY 1;
我得到的结果是:
DATETIME NIGHTS 'Country 2' 'Country 3' 'Country 9'
-------------------- ---------- ----------- ----------- -----------
197707 83648 0 0 0
197707 87301 0 0 0
197707 97350 0 0 0
【问题讨论】: