2009-08-25 10 views
-1

私は2つのテーブル(FCT_SALES_SUMMARY_AFCT_SALES_SUMMARY_B)を持っています。テーブルの列に対するSQLクエリ....(Oracle)

月曜日にtable Bよりもtable Aが生成されると仮定すると、次週の月曜日に 、つまり1週間後に104週間のデータが生成されます。しかし、数週間前のデータを増やすと はFCT_SALES_SUMMARY_Aのように失われます。すなわち、col104table Bはその週のデータを持ち、 table Aは最初のcol1データを失います。

以下に示すように、両方の表の同じ週のデータが異なる場合があります。 たとえば、22週目の給与がFCT_SALES_SUMMARY_Bに変更されました。

今度は、両方のテーブルの列を比較して同じ週の変更されたデータを調べる必要があります。 、つまりcol2FCT_SALES_SUMMARY_Acol1FCT_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......... 

表はfollow.sのように定義されます。

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) 

私たちは、データの週比較する必要があります週ごとに

+0

テーブルが正規化されていない理由は何ですか? – teabot

+0

FCT_SALES_SUMMARYのどの列が日付を表していますか? WK_UNIT1は1月1日であると推測できますが、あなたが言及したローリング日付を考慮します。 –

答えて

0

これまでの情報から、私はFirst Normal Formがあなたの友人になると言います。 ( - アプリの最も意味のあるものは何でもそれを呼び出す上WEEK_NUMBERによって指定されたとして)1週間に1行で...

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(または何でも)は毎週1ずつインクリメントし続けます。

テーブルのストレージ要件を大きくしますか?はい。ディスク容量は安いです。

クエリが遅くなりますか?可能であれば、コンピュータは高速です... ;-)

+0

OPにデータモデルを変更する権限があるとします。私は同様の[恐ろしい]モデリングの会計プログラムを見てきました... –

+0

はい私はそうです。そして、私は自分自身のような悲惨なものに苦しんだ...しかし、彼がスキーマを変更することができないなら、私が考えることができる良い答えはない - 悪いものだけ。本当に、本当に悪い。 IOW、もし彼がそこに行きたいなら、彼はここから始めるべきではない... –

関連する問題