修訂查詢.. [Id]列對所有記錄都是唯一的。查詢應該將CorEURUSD的正確值返回到Symbol = EURUSD和Symbol = GBPUSD,其中[Time] = [Time]值。新手SQL更新問題
CREATE TABLE [dbo].[Tck2](
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Symbol] [varchar](35) NULL,
[Time] [datetime] NULL,
[CorEURUSD] [decimal](14, 10) NULL,
[CorEURUSD2] [decimal](14, 10) NULL
) ON [PRIMARY]
INSERT [VT7STAB1].[dbo].[Tck2] ([Symbol],[Time],[CorEURUSD],[CorEURUSD2]) VALUES('EUR/USD', '2011-07-01 12:04:28.000', 0.8229, 0.6488)
INSERT [VT7STAB1].[dbo].[Tck2] ([Symbol],[Time],[CorEURUSD],[CorEURUSD2]) VALUES('EUR/USD', '2011-07-01 12:26:17.000', 0.9427, 0.6558)
INSERT [VT7STAB1].[dbo].[Tck2] ([Symbol],[Time],[CorEURUSD],[CorEURUSD2]) VALUES('EUR/USD', '2011-07-01 12:58:34.000', 0.7713, 0.5267)
INSERT [VT7STAB1].[dbo].[Tck2] ([Symbol],[Time],[CorEURUSD],[CorEURUSD2]) VALUES('GBP/USD', '2011-07-01 12:04:28.000', 0, 0)
INSERT [VT7STAB1].[dbo].[Tck2] ([Symbol],[Time],[CorEURUSD],[CorEURUSD2]) VALUES('GBP/USD', '2011-07-01 12:26:17.000', 0, 0)
INSERT [VT7STAB1].[dbo].[Tck2] ([Symbol],[Time],[CorEURUSD],[CorEURUSD2]) VALUES('GBP/USD', '2011-07-01 12:58:34.000', 0, 0)
,企圖從符號的CorEURUSD列複製運行下面的查詢 - 'EUR/USD' 轉化爲符號所產生的CorEURUSD列=「GBP/USD
update Tck2
set CorEURUSD = (
select CorEURUSD
from Tck2 T
where Symbol = 'EUR/USD')
where Symbol = 'GBP/USD'
給這個錯誤 消息512,級別16,狀態1,行1 子查詢返回多個值。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。 該聲明已被終止。
,當我使用這個版本..
update Tck2
set CorEURUSD = (
select CorEURUSD
from Tck2 T
where Symbol = 'EUR/USD')
where Symbol = 'GBP/USD'
and T.[Time] = [Time]
它拋出這個錯誤。
Msg 4104,Level 16,State 1,Line 2 無法綁定多部分標識符「T.Time」。
我希望更好,抱歉'質量混亂'請修改答案以匹配上面的查詢和表格應該是正確的。
我相信一個簡單的INNER JOIN與多個SELECT將起作用我只是沒有足夠的SQL經驗去做 – CraigJSte
請問您能解釋一下嗎?我不明白你在做什麼。你的條件'T. [id] = [id]'(這總是正確的,但我知道你的意思是正在更新的表的[id]列)結果是表中的同一行。因此該行的[Symbol]可以是'GBP/USD'或'EUR/USD'。所以只有在修復語法時纔會更新行。請提供更多信息。 –
我想你可能在你的例子中有一個錯字(除非符號='GBP/USD'時你只有一個[CorEURUSD]值)。 [id]上不能有唯一的鍵,並且在表中有兩個條目具有相同的ID和[Symbol]有兩個不同的值。這沒有意義。 –