我有以下兩個表:更新使用加入和選擇最新的值
ALL_Data
id | Name | DateAsInteger
-------------------------------------
10 | gazoline | 20151230
20 | diesel | 20160101
30 | accu | 20151128
30 | battery | 20170307
我知道,不是最好的辦法,以存儲日期爲整數,但現在已無法改變它。
PIVOT_Data
id | SomeInfo | Name
------------------------------------
10 | xx |
20 | yy |
30 | zz |
我需要從ALL_Data
更新PIVOT_Data
表最新Name
。
結果:
id | SomeInfo | Name | newest value DateAsInteger in ALL_Data
------------------------------------- -------------
10 | xx | gazoline | <-> 20151230
20 | yy | diesel | <-> 20160101
30 | zz | battery | <-> 20170307
我的嘗試:
UPDATE a
SET a.Name = b.Name
FROM PIVOT_Data a
join ALL_Data b
ON a.id = b.id
WHERE b.DateAsInteger = (
SELECT z1.DateAsInteger
FROM ALL_Data z1 LEFT JOIN ALL_Data z2
ON (z1.id = z2.id AND z1.Ti_DateAsInteger< z2.Ti_DateAsInteger)
WHERE z2.Ti_DateAsIntegerIS NULL);
錯誤消息:
消息512,級別16,狀態1,行 子查詢返回多個1值。當子查詢 跟隨=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。 該聲明已被終止。
我在做什麼?我在做什麼愚蠢的錯誤?
我應該GROUP BY嗎? 如果是,那麼如何?
任何幫助,高度讚賞。 提前致謝!
Msg 1087,Level 15,State 2,Line 11 必須聲明表變量'「@ALL_Data」'。我應該創建一個並從實際表格中將所有內容插入到varaibale中嗎? – Kaptah
我只是使用表變量作爲參考目的,您可以在普通表中使用@Kaptah – mohan111