SQL-запрос по столбцам таблицы .... (Oracle) - PullRequest
0 голосов
/ 25 августа 2009

У меня две таблицы говорят (FCT_SALES_SUMMARY_A и FCT_SALES_SUMMARY_B).

Если предположить, что table A генерируется каждый понедельник, то table B будет генерироваться в следующий понедельник. то есть через 1 неделю, как это, будут данные за 104 недели. Но как недели увеличивают предыдущие данные будет потеряно в FCT_SALES_SUMMARY_A, как показано ниже, т. е. col104 в table B будет содержать данные за эту неделю и table A потеряет первые col1 данные.

Как показано ниже, несколько раз данные за одну и ту же неделю в обеих таблицах будут отличаться. например, зарплата за неделю 22 января была изменена в FCT_SALES_SUMMARY_B.

Теперь мне нужно выяснить измененные данные за ту же неделю, сравнивая столбцы в обеих таблицах. то есть 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 голосов
/ 25 августа 2009

Исходя из приведенной информации, я бы сказал, что Первая нормальная форма будет вашим другом здесь.

Итак, ваш стол станет чем-то вроде этого:

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 (или что-то еще) просто увеличивается на единицу каждую неделю.

Это увеличит требования к хранилищу таблицы? Да. Дисковое пространство дешево.

Это замедлит выполнение запросов? Возможно, но компьютеры работают быстро ...; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...