通過寫這個查詢,試圖用另外兩列(月和年)創建一個帶有日期的列
。update [dbo].[National_Data]
set [date] = (SELECT CONVERT(DATE, CONCAT([年] ,'-',[月],'-','01' />)
from [dbo].[National_Data])
它回傳以下錯誤:
Msg 512, Level 16, State 1, Line 19
子查詢回傳1個以上的值。這是不允許的,當 子查詢跟隨=, !=, <, <= , >, >=或者當子查詢被用作運算式時,這是不允許的。 運算式。
我猜問題是我寫的查詢沒有逐行讀取。 我怎樣才能解決這個問題呢?
uj5u.com熱心網友回復:
你不需要一個子查詢。 只需使用運算式:
update [dbo].[National_Data]
set [date] = CONVERT(DATE, CONCAT([年] , '-', [月], '-01') 。)
你可以用datefromparts()來更簡潔地寫這個:
update [dbo].[National_Data]
set [date] = datefromparts([year], [月], 1)。)
或者為了確保date值與其他兩個一致,我建議使用一個計算列而不是update。 語法如下:
alter table National_Data add date as
(datefromparts([year], [month], 1) 。)
uj5u.com熱心網友回復:
對于這個更新查詢,你不需要子查詢
。
UPDATE [dbo].[National_Data]
SET [date] = CAST(CONCAT([ye] , '-'/span>, [month], '-01'/span>) AS DATETIME)。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/322164.html
標籤:
上一篇:如何訪問特定實體的屬性
下一篇:在資料框架的數字中放置小圓點
