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