ÕâÊÇ×îºÃµÄʱ´ú£¬ÕâÊÇ×µÄʱ´ú£¬ÕâÊÇÖǻ۵Äʱ´ú£¬ÕâÊÇÓÞ´ÀµÄʱ´ú£»ÕâÊÇÐÅÑöµÄʱÆÚ£¬ÕâÊÇ»³ÒɵÄʱÆÚ£»ÕâÊǹâÃ÷µÄ¼¾½Ú£¬ÕâÊǺڰµµÄ¼¾½Ú£»ÕâÊÇÏ£ÍûÖ®´º£¬ÕâÊÇʧÍûÖ®¶¬£»ÈËÃÇÃæÇ°ÓÐן÷ÑùÊÂÎÈËÃÇÃæÇ°Ò»ÎÞËùÓУ»ÈËÃÇÕýÔÚÖ±µÇÌìÌã»ÈËÃÇÕýÔÚֱϵØÓü¡£ ÎÒÒ²ÒªÓëʱ¾ã½øÁË£¬±»itpub2.0Ç£×Åβ°Í£¬Æ´ÃüµÄ±¼ÅÜ£¬²»Í£µÄ¹àË®...

6 ¹ØÓÚÊý¾Ý²Ö¿âά¶ÈÊý¾Ý´¦ÀíµÄ·½·¨Ì½¾¿ÏµÁСª¡ª»ºÂý±ä»¯Î¬´¦Àí¡ª¡ª¼Ç¼×îмǼ¼°ÉÏÒ

ÉÏһƪ / ÏÂһƪ  2006-12-09 00:00:00 / ¸öÈË·ÖÀࣺÊý¾Ý²Ö¿â×¨Çø

´ËÖÖ·½Ê½ÊÇ»ºÂý±ä»¯Î¬ÖнÏΪÕÛÖеÄ×ö·¨£¬µ«ÐèÒª±í½á¹¹ËæÖ®ÊÊÓ¦¡£ËüµÄÔ­ÀíÊǰÑÄ¿±ê±í×Ö¶ÎÀ©³äÒ»±¶£¬ÆäÖÐÒ»×éÓÃÀ´¼Ç¼×îеļǼÐÅÏ¢£¬ÁíÒ»×éÓÃÀ´¼Ç¼ÉÏÒ»´ÎµÄÀúÊ·¼Ç¼¡£Ð¼Ç¼²åÈëʱ£¬½«Æä²åÈëµ½×îмǼµÄλÖã¬Ò»µ©¼Ç¼·¢Éú¸Ä±ä£¬Ð޸ĺóµÄ¼Ç¼±äΪ×îмǼ£¬Ôò°ÑÐ޸ĺó¼ÇÂ¼Ìæ»»Ô­À´µÄ¼Ç¼£¬·ÅÔÚ×îмǼλÖã¬Í¬Ê±°ÑÔ­¼ÇÂ¼ÒÆÖÁ¾É¼Ç¼λÖá£

ITPUB¸öÈ˿ռä/{ u6q.s-Y)_/N2w7E

3.3.3¼Ç¼×îмǼ¼°ÉÏÒ»´ÎÀúÊ·£¨Type 3 Dimension -- keep the current and previous values in the target£©

´ËÖÖ·½Ê½ÊÇ»ºÂý±ä»¯Î¬ÖнÏΪÕÛÖеÄ×ö·¨£¬µ«ÐèÒª±í½á¹¹ËæÖ®ÊÊÓ¦¡£ËüµÄÔ­ÀíÊǰÑÄ¿±ê±í×Ö¶ÎÀ©³äÒ»±¶£¬ÆäÖÐÒ»×éÓÃÀ´¼Ç¼×îеļǼÐÅÏ¢£¬ÁíÒ»×éÓÃÀ´¼Ç¼ÉÏÒ»´ÎµÄÀúÊ·¼Ç¼¡£Ð¼Ç¼²åÈëʱ£¬½«Æä²åÈëµ½×îмǼµÄλÖã¬Ò»µ©¼Ç¼·¢Éú¸Ä±ä£¬Ð޸ĺóµÄ¼Ç¼±äΪ×îмǼ£¬Ôò°ÑÐ޸ĺó¼ÇÂ¼Ìæ»»Ô­À´µÄ¼Ç¼£¬·ÅÔÚ×îмǼλÖã¬Í¬Ê±°ÑÔ­¼ÇÂ¼ÒÆÖÁ¾É¼Ç¼λÖá£

ÕâÖÖ·½Ê½£¬¶ÔÓÚÄÇЩ²»ÊÇÐèÒªËùÓÐÀúÊ·ÐÅÏ¢µÄ±í¿ÉÒÔÊÊÓ㬵«Í¬Ê±´øÀ´µÄÊDZí½á¹¹ÐèÒª

ÏàÓ¦µÄµ÷Õû£¬Ôö¼ÓÏàͬµÄÒ»×é×ֶΣ¬ÔÚ×ֶα¾Éí¾Í¶àµÄÇé¿öÏ£¬ÆäбíµÄ×Ö¶ÎÊý½«ÊÇÔ´±í×Ö¶ÎÊý*2 £¬¹ÊʹÓôËÖÖ·½Ê½ÐèÒªÕå×á£

ͬʱ²ÉÓô˷½·¨¶ÔÓÚOLAPÖÐά¶ÈµÄ½¨Ä£²¢Ã»ÓÐÌ«´óµÄÒæ´¦£¬ÒòΪÕâÁ½Ì×Êý¾ÝÖ»ÊÇǰºó°æ±¾µÄÇø±ð£¬²¢²»´æÔÚ²ã´ÎµÄ²î±ð¡£

´úÂë

CREATE TABLE t_dem_xxx

(

ID VARCHAR(20) NOT NULL,

Name1 VARCHAR(50),

Name2 VARCHAR(50),

PreName1 VARCHAR(50),

PreName2 VARCHAR(50),

CONSTRAINT PK_t_dem_xxx PRIMARY KEY (ID)

)

go

CREATE TABLE t_tmp_xxx

(

ID VARCHAR(20) NOT NULL,

Name1 VARCHAR(50),

Name2 VARCHAR(50),

CONSTRAINT PK_t_tmp_xxx PRIMARY KEY (ID)

)

go

CREATE PROCEDURE p_dem_xxx

AS

--ά¶È³éÈ¡´æ´¢¹ý³Ì

BEGIN

DECLARE

@num NUMERIC(10,0)

SELECT @num = COUNT(*) FROM t_dem_xxx

--Èç¹ûÔ­±íΪ¿Õ£¬¹¹Ôìȱʡֵ

IF @num = 0

BEGIN

INSERT INTO t_dem_xxx (ID,Name1,Name2) SELECT '-2','NULLÖµ',''

INSERT INTO t_dem_xxx (ID,Name1,Name2) SELECT '-1','ȱʧÍâ¼ü',''

END

--¸ù¾ÝÖ÷¼ü²åÈëÔÚά¶È±íÖÐÕÒ²»µ½µÄ»ù´¡Êý¾Ý

INSERT INTO t_dem_xxx

(

ID ,

Name1 ,

Name2

)

SELECT a.ID,a.Name1,a.Name2

FROM t_tmp_xxx a LEFT OUTER JOIN t_dem_xxx b

ON a.ID = b.ID

WHERE b.ID IS NULL

--¸ù¾ÝÖ÷¼ü¸üÐÂÔÚά¶È±íÖÐÕÒµ½µ«ÊÇÒѾ­·¢Éú±ä»¯µÄµÄ»ù´¡Êý¾Ý£¬ÖØÐÂÉèÖÃÊý¾Ý

UPDATE t_dem_xxx

SET Name1 = a.Name1,

Name2 = a.Name2,

PreName1 = b.Name1,

PreName2 = b.Name2

FROM t_tmp_xxx a,t_dem_xxx b

WHERE a.ID = b.ID

AND (a.Name1<>b.Name1 or a.Name2<>b.Name2)

END

±¸×¢£º

ÎĵµÖÐËùÓдúÂë¾ù¿ÉÖ´ÐУ¬ÇÒÖ´Ðв½Öè¾ùÏàͬ£¬ÒÔϸ½µ÷ÓôúÂë

--µÚÒ»´ÎÖ´ÐвåÈë²Ù×÷

INSERT INTO t_tmp_xxx VALUES ('1','AA','')

INSERT INTO t_tmp_xxx VALUES ('2','BB','')

EXEC p_dem_xxx

SELECT * FROM t_dem_xxx

SELECT * FROM t_tmp_xxx

--¸üÐÂÊý¾ÝºóµÄ±ä»¯

UPDATE t_tmp_xxx SET Name2 = 'A' WHERE ID = '1'

EXEC p_dem_xxx

SELECT * FROM t_dem_xxx

SELECT * FROM t_tmp_xxx


TAG:

 

ÆÀ·Ö£º0

ÎÒÀ´ËµÁ½¾ä

ÏÔʾȫ²¿

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

ÈÕÀú

« 2008-10-12  
ÈÕ Ò» ¶þ Èý ËÄ Îå Áù
   1234
567891011
12131415161718
19202122232425
262728293031 

Êý¾Ýͳ¼Æ

  • ·ÃÎÊÁ¿: 25631
  • ÈÕÖ¾Êý: 66
  • ½¨Á¢Ê±¼ä: 2007-12-07
  • ¸üÐÂʱ¼ä: 2008-09-28

RSS¶©ÔÄ

Open Toolbar