2017-01-30 70 views
0

是否有可能使用2 column/field從其他表格更新我的表格的1 column/field更新1 table-col使用其他表格中的2 table-col

我嘗試此查詢:

UPDATE TEMP_Quantity 
SET SS = (SELECT Qty1, Qty2 FROM Table_Quantity 
WHERE Id = @IdHolder AND ProductId = 7) 
WHERE Id = @IdHolder 

和SQL說此錯誤:

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.`

SS = NVARCHAR(因爲它可以接受,我將選擇的列號或字符串基)

有人可以告訴我正確的方法來做到這一點嗎? TIA :)

+0

什麼應該是在這兩個量 –

+0

的'SS',和商店什麼你到底想幹什麼?你的字段SS只能取一個數字(我預計SS是一個整數),而不是兩個。 – muffi

+0

@JaydipJ合併數量。樣品'Qty1 = 10'和'Qty2 = 3'然後'SS = 103'。 – Muj

回答

1

呃... ...回答你的問題,你可以CONCAT兩個數量的

UPDATE t1 
SET SS = CONCAT(t2.Qty1, t2.Qty2) 
FROM TEMP_Quantity t1 
INNER JOIN Table_Quantity t2 on t2.Id = t1.Id 
WHERE t1.Id = @IdHolder 
AND t2.ProductId = 7 

但這只是感覺不對。

+0

這意味着'concat'會合並2個指定列的2個值嗎? – Muj

+0

是的,如在你的評論中,如果你有'Qty1 = 10'和'Qty2 = 3',那麼'SS = 103' – Stephen

+0

Concat將一個字符串追加到另一個字符串中。 – muffi

1

試試這個:

UPDATE TEMP_Quantity 
SET SS = (SELECT CAST(Qty1 AS VARCHAR(10)) + CAST(Qty2 AS VARCHAR(10)) 
      FROM Table_Quantity 
      WHERE Id = @IdHolder AND ProductId = 7) 
WHERE Id = @IdHolder 
0

您可以使用並檢查以下腳本。我希望它對你有用。

declare @qty1 int 
declare @qty2 int 

if object_id('tempdb..#dbDestination') is not null 
    drop table #dbDestination 

create table #dbDestination(
Id int, 
ss nvarchar(50) 
) 

if object_id('tempdb..#dbSource') is not null 
    drop table #dbSource 

create table #dbSource(
Id int, 
ProductId int, 
qty1 int, 
qty2 int 
) 

insert into #dbDestination(Id,ss) values (1,null),(2,null) 
insert into #dbSource(Id,ProductId,qty1,qty2) values(1,7,10,3), (2,null,8,2) 

UPDATE #dbDestination 
SET SS = (
      SELECT CAST(qty1 as nvarchar(50))+ cast(qty2 as nvarchar(50)) 
      FROM #dbSource 
      WHERE Id = 1 AND ProductId = 7 
     ) 
WHERE Id = 1 

select * from #dbDestination