对表的列进行SQL查询....(Oracle)

时间:2009-08-25 14:19:39

标签: sql oracle

我有两张表(FCT_SALES_SUMMARY_AFCT_SALES_SUMMARY_B)。

如果我们假设每周一生成table A,则会在下周一生成table B 即在这样的1周后,将有104周的数据。但随着周数增加以前的数据 将在FCT_SALES_SUMMARY_A中丢失,如下所示,col104中的table B将包含该周的数据和 table A会丢失第一个col1数据。

如下所示,有时两个表中同一周的数据会有所不同。 例如,在FCT_SALES_SUMMARY_B中更改了第22周的工资。

现在我需要找出同一周的更改数据,比较两个表中的列。 即,col2中的FCT_SALES_SUMMARY_A应与col1中的FCT_SALES_SUMMARY_B进行比较。

例如,表格中的数据在列中:

Table A
col:col1........col2........col3........col4........col5...col104
WEEk:1stjan......8thjan......15thjan.....22ndjan.....
sal:100.........200.........300.........400.........


TABLE B

col:col1........col2........col3........col4........col5...col104
WEEk:8thjan......15thjan.....22thjan.....29ndjan.....
sal:200.........300.........450.........500.........

表定义如下:

DESC FCT_SALES_SUMMARY


CREATE TABLE FCT_SALES_SUMMARY
(
  PROD_SID                 NUMBER,
  CURR_CUST_SID            NUMBER,
  BIO_ID                   NUMBER,
  CURR_TERR_SID            NUMBER,
  FRAN_SID                 NUMBER,
  CURR_EMP_SID             NUMBER,
  ESTMT_FLG                VARCHAR2(1 BYTE),
  PROD_WAC_PRC             NUMBER(15,4),
  SALE_RATIO               NUMBER,
  WK_UNITSCUR              NUMBER(15,4),
  WK_UNITS1                NUMBER(15,4),
  WK_UNITS2                NUMBER(15,4),
  WK_UNITS3                NUMBER(15,4),
  WK_UNITS4                NUMBER(15,4),
  WK_UNITS5                NUMBER(15,4),
  WK_UNITS6                NUMBER(15,4),
  WK_UNITS7                NUMBER(15,4),
  WK_UNITS8                NUMBER(15,4),
  WK_UNITS9                NUMBER(15,4),
  WK_UNITS10               NUMBER(15,4),
  WK_UNITS11               NUMBER(15,4),
  WK_UNITS12               NUMBER(15,4),
  WK_UNITS13               NUMBER(15,4),
  WK_UNITS14               NUMBER(15,4),
  WK_UNITS15               NUMBER(15,4),
  WK_UNITS16               NUMBER(15,4),
  WK_UNITS17               NUMBER(15,4),
  WK_UNITS18               NUMBER(15,4),
  WK_UNITS19               NUMBER(15,4),
  WK_UNITS20               NUMBER(15,4),
  WK_UNITS21               NUMBER(15,4),
  WK_UNITS22               NUMBER(15,4),
  WK_UNITS23               NUMBER(15,4),
  WK_UNITS24               NUMBER(15,4),
  WK_UNITS25               NUMBER(15,4),
  WK_UNITS26               NUMBER(15,4),
  WK_UNITS27               NUMBER(15,4),
  WK_UNITS28               NUMBER(15,4),
  WK_UNITS29               NUMBER(15,4),
  WK_UNITS30               NUMBER(15,4),
  WK_UNITS31               NUMBER(15,4),
  WK_UNITS32               NUMBER(15,4),
  WK_UNITS33               NUMBER(15,4),
  WK_UNITS34               NUMBER(15,4),
  WK_UNITS35               NUMBER(15,4),
  WK_UNITS36               NUMBER(15,4),
  WK_UNITS37               NUMBER(15,4),
  WK_UNITS38               NUMBER(15,4),
  WK_UNITS39               NUMBER(15,4),
  WK_UNITS40               NUMBER(15,4),
  WK_UNITS41               NUMBER(15,4),
  WK_UNITS42               NUMBER(15,4),
  WK_UNITS43               NUMBER(15,4),
  WK_UNITS44               NUMBER(15,4),
  WK_UNITS45               NUMBER(15,4),
  WK_UNITS46               NUMBER(15,4),
  WK_UNITS47               NUMBER(15,4),
  WK_UNITS48               NUMBER(15,4),
  WK_UNITS49               NUMBER(15,4),
  WK_UNITS50               NUMBER(15,4),
  WK_UNITS51               NUMBER(15,4),
  WK_UNITS52               NUMBER(15,4),
  WK_UNITS53               NUMBER(15,4),
  WK_UNITS54               NUMBER(15,4),
  WK_UNITS55               NUMBER(15,4),
  WK_UNITS56               NUMBER(15,4),
  WK_UNITS57               NUMBER(15,4),
  WK_UNITS58               NUMBER(15,4),
  WK_UNITS59               NUMBER(15,4),
  WK_UNITS60               NUMBER(15,4),
  WK_UNITS61               NUMBER(15,4),
  WK_UNITS62               NUMBER(15,4),
  WK_UNITS63               NUMBER(15,4),
  WK_UNITS64               NUMBER(15,4),
  WK_UNITS65               NUMBER(15,4),
  WK_UNITS66               NUMBER(15,4),
  WK_UNITS67               NUMBER(15,4),
  WK_UNITS68               NUMBER(15,4),
  WK_UNITS69               NUMBER(15,4),
  WK_UNITS70               NUMBER(15,4),
  WK_UNITS71               NUMBER(15,4),
  WK_UNITS72               NUMBER(15,4),
  WK_UNITS73               NUMBER(15,4),
  WK_UNITS74               NUMBER(15,4),
  WK_UNITS75               NUMBER(15,4),
  WK_UNITS76               NUMBER(15,4),
  WK_UNITS77               NUMBER(15,4),
  WK_UNITS78               NUMBER(15,4),
  WK_UNITS79               NUMBER(15,4),
  WK_UNITS80               NUMBER(15,4),
  WK_UNITS81               NUMBER(15,4),
  WK_UNITS82               NUMBER(15,4),
  WK_UNITS83               NUMBER(15,4),
  WK_UNITS84               NUMBER(15,4),
  WK_UNITS85               NUMBER(15,4),
  WK_UNITS86               NUMBER(15,4),
  WK_UNITS87               NUMBER(15,4),
  WK_UNITS88               NUMBER(15,4),
  WK_UNITS89               NUMBER(15,4),
  WK_UNITS90               NUMBER(15,4),
  WK_UNITS91               NUMBER(15,4),
  WK_UNITS92               NUMBER(15,4),
  WK_UNITS93               NUMBER(15,4),
  WK_UNITS94               NUMBER(15,4),
  WK_UNITS95               NUMBER(15,4),
  WK_UNITS96               NUMBER(15,4),
  WK_UNITS97               NUMBER(15,4),
  WK_UNITS98               NUMBER(15,4),
  WK_UNITS99               NUMBER(15,4),
  WK_UNITS100              NUMBER(15,4),
  WK_UNITS101              NUMBER(15,4),
  WK_UNITS102              NUMBER(15,4),
  WK_UNITS103              NUMBER(15,4),
  WK_UNITS104              NUMBER(15,4),
  WK_UNITS105              NUMBER(15,4)

我们需要逐周比较数据。

1 个答案:

答案 0 :(得分:0)

根据目前为止提供的信息,我会说First Normal Form将成为你的朋友。

所以你的桌子会变得更像这样:

CREATE TABLE FCT_SALES_SUMMARY
(
  PROD_SID                 NUMBER,
  CURR_CUST_SID            NUMBER,
  BIO_ID                   NUMBER,
  CURR_TERR_SID            NUMBER,
  FRAN_SID                 NUMBER,
  CURR_EMP_SID             NUMBER,
  ESTMT_FLG                VARCHAR2(1 BYTE),
  PROD_WAC_PRC             NUMBER(15,4),
  SALE_RATIO               NUMBER,
  WK_UNITSCUR              NUMBER(15,4),
  WEEK_NUMBER              NUMBER,
  WK_UNITS                 NUMBER(15,4)
)

...每周一行(由上面的WEEK_NUMBER指定 - 称之为对您的应用最有意义的任何内容)。

现在你不会丢失任何你不想丢失的数据:WEEK_NUMBER(或其他)只是每周增加一个。

它会使表的存储要求更高吗?是。光盘空间很便宜。

它会使查询变慢吗?可能,但计算机很快......; - )