我正在尝试创建一个将生成下表的查询。 我知道列名称(即每列的开始和结束日期。这些日期将根据月份/年份而有所不同。列数也会有所不同,因为某个月可能有6周)。
池的数量也可能不同。可以有'n'个池。所以我为每个池(行)和每周(列)创建了一个查询
假设有3个池(3行)和5个星期(5列),我可能需要运行3 * 5 = 15个查询。
有没有办法创建一个单独的查询来解决这个问题?
任何人都可以帮我解决这个问题吗?
我很擅长这个......
--------------------------------------------------
row 0 | week1 | week2 | week3 | week4 | week5 |
st-end|jan1 -2|jan 3-9|jan10-17|jan18-24|jan25-31|
--------------------------------------------------
pool a| 100 | 105 | 309 | 345 | 234 |
pool b| 106 | 108 | 399 | 245 | 214 |
pool c| 120 | 145 | 359 | 365 | 274 |
--------------------------------------------------
答案 0 :(得分:1)
您是否尝试过使用CASE表达式? [参见“控制流功能”] 这些方面的东西:
select POOL
,sum(case when dt between 20120101 and 20120107 then VAL else 0) as Wk1
,sum(case when dt between 20120108 and 20120114 then VAL else 0) as Wk2
... ...
from MY_TABLE
group by POOL