【发布时间】:2019-07-04 20:40:32
【问题描述】:
我需要使用仅加载增量记录的数据库创建交叉表。请考虑以下示例,表 1:
DAY ACCOUNT NO SALES GENDER
1-Apr-2019 ACC01 5000 MALE
1-Apr-2019 ACC02 6000 FEMALE
1-Apr-2019 ACC03 7000 FEMALE
1-Apr-2019 ACC04 8000 MALE
2-Apr-2019 ACC01 7500 MALE
2-Apr-2019 ACC02 4000 FEMALE
2-Apr-2019 ACC03 10000 FEMALE
2-Apr-2019 ACC04 20000 MALE
3-Apr-2019 ACC01 8500 FEMALE
3-Apr-2019 ACC05 3500 FEMALE
4-Apr-2019 ACC02 9500 FEMALE
4-Apr-2019 ACC06 3600 FEMALE
4-Apr-2019 ACC07 4800 MALE
5-Apr-2019 ACC01 15000 FEMALE
5-Apr-2019 ACC03 12500 FEMALE
Table1 条目解释如下:
4 月 1 日有 4 个帐户,他们的销售编号和帐户持有人的性别。
4 月 2 日,所有帐户的销售编号都有一些变化,因此已加载。
但是在 4 月 3 日,我们只加载增量帐户。可以看出,ONLY ACC01 的销售额发生了变化,并且还有一个新帐户 ACC05。因此只会加载这两个帐户。
同样在 4 月 4 日,现有帐户 ACC02 的销售额比之前的值增加,因此它被加载。除此之外,还有 2 个新帐户,ACC06 和 ACC07,它们也会被加载。
最后在 4 月 5 日,我们加载现有账户,这些账户的销售编号与上次值相比有所变化。
现在,我必须进行每日 MIS 报告,考虑到我的所有帐户在 2019 年 4 月 5 日都处于活动状态,结果应该如下所示。
NO OF ACCOUNTS 实际上是每天结束时活跃帐户的计数。
上面列出的报表1,我能够在Report Studio中使用Cognos Query/SQL项来实现以下子查询:
SELECT DISTINCT D1.DAY, (SELECT COUNT(DISTINCT D2.ACCN_NO) FROM
DAILY_TABLE D2 WHERE D2.DAY <= D1.DAY) AS NO_OF_ACCOUNTS FROM
DAILY_TABLE D1 GROUP BY D1.DAY
现在,我的要求是生成以下交叉表,并在 Gender 上进行切割。
最好的问候
【问题讨论】:
-
我们现在的帐户是如何在当天处于活动状态的?有
accountstable 吗? -
哦。对不起。我错过了这个问题。实际上,该表应该同时具有 - 活动帐户和已关闭帐户。但由于我试图开发一个查询,我想到只考虑活跃帐户。但是,是的,在这个表中会有一个 1=Active 和 0=Closed 的标志。
标签: sql sql-server database cognos-10