--销售日统计表 xsrhzb1 --销售月统计表 xsyhzb1
CREATE TABLE XSRHZB11( CREATE TABLE xsyhzb11(
DWDM VARCHAR2(5), DWDM VARCHAR2(5),
YPDM VARCHAR2(5), YPDM VARCHAR2(5),
YWRQ VARCHAR2(5), YRQ VARCHAR2(5),
SFHX CHAR(1), XSLXZB VARCHAR2(4),
XSLXZB VARCHAR2(4), XSLX VARCHAR2(4),
XSLX VARCHAR2(4), XSDXZB VARCHAR2(4),
XSDXZB VARCHAR2(4), ZXZB VARCHAR2(4),
ZXZB VARCHAR2(4), BYSL NUMBER(5),
DWMC VARCHAR2(10), BYJE NUMBER(5),
DWLB VARCHAR2(2), BNLJSL NUMBER(5),
SJDWDM VARCHAR2(5), BNLJJE NUMBER(5),
SL NUMBER(5), DWMC VARCHAR2(10),
JE NUMBER(5) DWLB CHAR(2),
); SJDWDM VARCHAR2(5),
YPMC VARCHAR2(10),
XSLXZBMC VARCHAR2(5),
XSLXMC VARCHAR2(5),
XSDXZBMC VARCHAR2(5),
ZXZBMC VARCHAR2(5)
) ;
要求这样的结果集:
DWMC DWDM JT ZT SYJT QNTQ DYLJ DNLJ CXS
---------- ----- ---------- ---------- ---------- ---------- ---------- ---------- ----------
公司1 01209 261 142 142 102 47 39 238
公司1 01209 516 280 278 204 46 54 472
其中:
--1. 今天 jt 从 XSRHZB11 表中取出ywrq='jt' 的对 sl 和 je 的汇总放在JT这一列
--2. 昨天 zt 从 XSRHZB11 表中取出ywrq='zt' 的对 sl 和 je 的汇总放在ZT这一列
--3. 上月今天 syjt 从 XSRHZB11 表中取出ywrq='syjt' 的对 sl 和 je 的汇总放在SYJT这一列
--4. 去年同期 qntq 从 XSRHZB11 表中取出ywrq='qntq' 的对 sl 和 je 的汇总放在QNTQ这一列
--5. 当月累计 dylj 从 XSYHZB11 表中取出yrq='dylj' 的对 sl 和 je 的汇总放在DYLJ这一列
--6. 当年累计 nnlj 从 XSYHZB11 表中取出yrq='dnlj' 的对 sl 和 je 的汇总放在DNLJ这一列
--7. 纯销售是"今天"的一个子集: xsdxzb in ('12 01','1202','1211','1212','1221')
即,从 XSRHZB11 表中取出ywrq='jt' and xsd xzb in ('1201','1202','1211','1212','1221') 的对 sl 和 je 的汇总放在CXS这一列
要求取出YWRQ分别为(JT、ZT、SYJT 、QNTQ、 ZT 、DYLJ、 DNLJ)的分别对SL和金额两个字段的汇总值,
并且CXS这一列的值为WHERE YWRQ='JT' AND xsd xzb in ('1201','1202','1211','1212','1221')的对SL和金额两个字段的汇总值,
即,纯销售这一列是JT这一列的一个子集。从而得到如下结果,有什么好办法么???
第一行为满足条件的SL的汇总值,第二行为满足条件的JE的汇总值
(如果可以考虑到执行效率是最好的了,因为这个表的实际数据是百万级的。以下是DEMO数据。
另外,不知道是不是应当将这个表按照时间或其他什么分段存储,从而改进性能???)
DWMC DWDM JT ZT SYJT QNTQ DYLJ DNLJ CXS
---------- ----- ---------- ---------- ---------- ---------- ---------- ---------- ----------
公司1 01209 261 142 142 102 47 39 238
公司1 01209 516 280 278 204 46 54 472
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/747/viewspace-483408/
,如需转载,请注明出处,否则将追究法律责任。