两个表,A表为原始表,B表为变化后的表,要求把变化后的字段的值用动态select语句写出来,怎么做?比如
A表
ItemID colA ColB colC
1 a b cB表
ItemID colA colB colC
1 aa b c
colA的值发生了变化,那么select语句是
select ItemID,colA from B where....
如果B表为:
B表
ItemID colA colB colC
1 aa bb c
cola ,colB的值都发生了变化,
那么select 语句是:select ItemID, cola,colB...
以此类推。
谢谢各位高手先
A表
ItemID colA ColB colC
1 a b cB表
ItemID colA colB colC
1 aa b c
colA的值发生了变化,那么select语句是
select ItemID,colA from B where....
如果B表为:
B表
ItemID colA colB colC
1 aa bb c
cola ,colB的值都发生了变化,
那么select 语句是:select ItemID, cola,colB...
以此类推。
谢谢各位高手先
create table #A (ItemID int primary key identity(1,1),colA varchar(10),colB varchar(10),colC varchar(10))
insert into #A values ('a','b','c')
insert into #A values ('a','b','c')
create table #B (ItemID int primary key identity(1,1),colA varchar(10),colB varchar(10),colC varchar(10))
insert into #B values ('aa','bs','c')
insert into #B values ('a','b','c')
select * from #A
select * from #Bselect bb.* from #A aa inner join #B bb
on aa.colA!= bb.colA or aa.colB!=bb.colB or aa.colC!=bb.colC
where aa.ItemID = bb.ItemID不知道是不是你要的
如果是要記錄A表那一個發生變化吧?在B表不要重複記錄,可需要用int就行了,記錄變化次數在觸發器實現
insert b select 1 ,'a' ,'b' ,'c'create table b(ItemID int, colA varchar(10),ColB varchar(10), colC varchar(10))
insert b select 1 ,'aa' ,'b' ,'c'select b.ItemID,
colA=(case when a.colA=b.colA then null else b.colA end),
colB=(case when a.colB=b.colB then null else b.colB end),
colC=(case when a.colC=b.colC then null else b.colC end)
from a,b where a.ItemID=b.ItemID