这是我的桌子
合约ID | 期间 | 预测 | 不足 |
---|---|---|---|
1 | 5月23日 | 35325 | 456 |
2 | 6月24日 | 3466 | 768 |
3 | 9月22日 | 457657 | 879 |
我需要输出为:
合约ID | 5月23日预测 | 5月23日短缺 | 6月24日预报 | 6月24日短缺 | 9月22日预测 | 9月22日短缺 | 总体预测 | 总缺口 |
---|---|---|---|---|---|---|---|---|
1 | 35325 | 456 | 35325 | 456 | ||||
2 | 3466 | 768 | 3466 | 768 | ||||
3 | 457657 | 879 | 457657 | 879 |
在 MicroStrategy Developer 中。
我可以通过将 period 属性放置在行级别进行预测来实现此目的,但之后我无法添加另一个指标。
大家有什么建议吗?
所以,(不是 MicroStrategy 的具体答案) 也就是说,我始终相信将业务逻辑放置在更靠近数据库的位置是有好处的。
--如果您知道周期(如果它们是固定的,这很容易)
选择 , 合约_ID , 期间 = 'May23' 时的情况 那么预测 否则为空 截至 5 月 23 日预测 , 期间 = 'May23' 时的情况 那么短缺 否则为空 截至 5 月 23 日短缺 , 期间 = 'June24' 时的情况 那么预测 否则为空 截至 6 月 24 日预测 , 期间 = 'June24' 时的情况 那么短缺 否则为空 截至 6 月 24 日短缺 ... 来自您的餐桌 ; 等等
-- 如果您不确定它们是什么时期,但您知道可以完成多少次(假设一年 12 个)这样的事情
选择 合约ID , 时期 , MAX(当 PERIOD_COUNTER = 1 时的情况 那么预测 否则为空 结束)作为预测1 , MAX(当 PERIOD_COUNTER = 1 时的情况 那么短缺 否则为空 完) AS 短缺1 , MAX(当 PERIOD_COUNTER = 2 时 那么预测 否则为空 结束)作为预测1 , MAX(当 PERIOD_COUNTER = 2 时 那么短缺 否则为空 完) AS 短缺1 ... 来自您的餐桌 交叉连接 (选择 时期 , ROW_NUMBER() OVER(按期间排序) AS PERIOD_COUNTER 从您的餐桌上 按 1 分组 ) ;