2013-12-17 138 views
1

我需要一些幫助來更新我需要每天從一個主表中提取值的一些sql表格。每天使用另一個表中的值更新sql表格

我的主表由狀態',日常更新的說明和日期組成。我有3個其他表需要根據狀態ID號從主表中提取值。例如,如果它是Type1那麼它將獲得紅色,綠色,黃色的數量以及該類型的當前日期,並且需要每天進行此操作。

Update [TableA] 
SET Date (select Date from [TableB] where [TableB].Date = [TableA].DateDiscovered and [TableB].Date IS NOT NULL) --not sure if this is write, this is just what I found online 

這裏是我的兩個表的一些例子將用於:

主表

做一些研究,我看到了,我需要實現這樣的事情後,

enter image description here

副表

enter image description here

所以基本上我需要用以下幫助:二次表將需要從「狀態」列數了綠色,紅色,橙色和黃色,並把它們放到指定的列。因此,如果有4個綠色,2個紅色,1個黃色和2個橙子,他們將被放在次表中的相應列中。我每天都需要這樣做,當它完成時,它會在輔助表中的日期列中記錄當前日期。

+0

你的樣品查詢不是有效的SQL。您能否顯示一些示例數據,在更新之前和之後顯示次表? –

+0

你有沒有試過尋找觸發器的使用?另外,更新語句可以一次修改多個字段。 – PseudoToad

+0

這在不同的數據庫引擎中完成的方式不同。你正在使用哪個數據庫?另外,請顯示相關表格的結構。 –

回答

1

這聽起來像你想INSERT一個新行Secondary Table每一天,所有Status值的Main Table的總結? Regarless的DiscoveredEscalated in Main Table

如果是這樣,你需要:

INSERT INTO SecondaryTable 
SELECT CAST(GetDate() as Date), 
SUM(CASE WHEN Status = 'R' THEN 1 ELSE 0 END) as Red, 
SUM(CASE WHEN Status = 'O' THEN 1 ELSE 0 END) as Orange, 
SUM(CASE WHEN Status = 'Y' THEN 1 ELSE 0 END) as Yellow, 
SUM(CASE WHEN Status = 'G' THEN 1 ELSE 0 END) as Green 
FROM MainTable 
+0

這是完美的!工作很好,但我怎樣才能讓它每天運行一次? – CSharpDev4Evr

+0

使用包含上述SQL文本的T-SQL作業步驟添加SQL Server代理作業,並安排作業根據需要運行。 –

+0

工作。謝謝! – CSharpDev4Evr

相關問題