【发布时间】:2012-12-31 17:43:52
【问题描述】:
我正在尝试创建一个将生成下表的查询。 我知道列名(即每列的开始和结束日期。这些日期将根据月/年而有所不同。而且列数也会有所不同,因为某个月可能有 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 |
--------------------------------------------------
【问题讨论】:
-
这不是你问题的答案,只是一个评论......这通常是我更喜欢从 SQL 切换到命令式编程 (Java) 的那种情况。您可以创建一个用于计算通用“单元格”的准备好的语句,然后为 15 个单元格中的每一个执行它(通过改变一些参数)。没什么不好的,15分钟就搞定了。如果计算和/或查询很昂贵,您可以缓存结果表。在 SQL 中执行所有这些操作可能会变得棘手且难以被其他人阅读/理解。
-
没有看到您要查询的表以创建表(结果集),您已经表明不可能说出查询应该是什么。
-
@NickHolt - 假设我试图获得 ('pool a'- week1)、(pool a - week 2) 等的组合,这适用于所有池,因此需要 15 个查询我认为应该运行。我只想检查是否可以运行单个查询..
-
这称为具有动态列的 pivot 查询。目前这在 MySQL 中是不可能的。请参阅this ink 了解一些有趣的解决方法。
-
如果你有几十个这样的汇总表,可以考虑创建一个支持多维查询的数据仓库。