2011-03-18 68 views
0

。我們使用Enterprise Manager與SQL Server 2000更新兩個SQL表列(SQL Server 2000中)

背景溝通:

我有一張表(表A),其中包含銷售員編號(slspsn_no)和地區和銷售信息...由於銷售人員編號和地區有多個記錄,因此我創建了一個將銷售人員編號和地區分組的視圖(視圖A)。

現在我創建了一個單獨的表(表B),其中包含兩個基於該視圖的相似列以及更多的表。

列:slspsn_no,區域,January_sales_goals,February_sales_goals,March_sales_goals等

這些月度銷售目標將由一個人通過訪問進行管理。唯一的問題是現在這個工作很好,但是表A是經常更新slspsn_no和區域,因此我的觀點。

問:

有人可以幫我用SQL命令,將更新表B中的兩列基礎上觀看?我們面臨的挑戰是,如果沒有在已輸入的每月銷售目標中放置空值,就會這樣做。如果銷售人員/區域組合不再位於視圖A中,它只會刪除表B中的所有行;如果新銷售人員/在View A中創建了一個區域,對於每個月度銷售目標可以通過稍後訪問進行更改,這些零點或零點都是空值。

如果有人有一個想法,可以在創建語法時將表slspsn_no和區域從表A分組而不需要視圖,我很樂意嘗試這樣做。

非常感謝! -D

+0

你有使用SQL 2000的索引視圖考慮? http://www.sqlteam.com/article/indexed-views-in-sql-server-2000 – Jeff 2011-03-18 18:57:17

+0

如果任何一個答案是正確的,請接受它。 – Ben 2012-02-11 20:49:39

回答

0

看一看這個例子。

您應該可以對其進行修改以適應您的特定需求。

set nocount on; 

declare @A table(id int, region int, name varchar(90)); 
insert @A values(1,200,'bob'); 
insert @A values(2,300,'lee'); -- doesn't exist in @B, should be added 
insert @A values(5,300,'mia'); 
insert @A values(19,300,'tex'); 
insert @A values(401,400,'gaga'); -- doesn't exist in @B, should be added 

declare @B table(id int, region int, goal1 int, goal2 int); 
insert @B Values(1,200,8,9); 
insert @B Values(5,300,7,7); 
insert @B Values(19,300,5,9); 
insert @B Values(555,100,1,1); -- doesn't exist in @A, should be deleted 

select * from @B order by id, region 

-- insert new @A records into @B 
insert @B (id, region) 
select id, region from @A where id not in (select id from @B) 

-- delete records from @B where not found in @A 
delete @B 
where id not in (select id from @A) 

select * from @B order by id, region 
+0

我必須在星期一再試一次......我一直在FROM錯誤消息附近收到不正確的語法。感謝您的幫助到目前爲止 – Diego 2011-03-18 20:59:18

+0

我可以毫無誤差地運行上述代碼... – jim31415 2011-03-19 23:08:46