SJ87 Ответов: 2

Как обновить клиента с несколькими значениями в другой таблице данных ?


привет,
У меня есть таблица с этими столбцами
[таблицы tablea]:
CID-CName-Month-DepositAmount-checkORcash-colB
101-Джеймс-март-нуль-нуль-бббб

[таблица b]:
CID-месяц-DepositAmount-checkORcash
101-март-100.00-наличные
101-март-200.00-наличные
101-март-300.00-наличные
101-апрель-200.00-наличные
101-апрель-250,00-чек


здесь я хотел бы обновить [tableA] DepositAmount, checkORcash с [tableB] DepositAmount, checkORcash.
Не могли бы вы помочь мне, как обновить [таблицу]. Я хочу добавить все значения DepositAmount, checkORcash из [tableB], где month= 'March'

Что я уже пробовал:

declare @i int 
set @i = 1
while (@i <=  (select count(*) FROM [tableB] where Month='March' and CID=101) )
begin
 update [tableA] set DepositAmount = b.DepositAmount, checkORcash   = b.checkORcash
  From [tableB] b where month='March'        
set @i=@i+1
end
go

2 Ответов

Рейтинг:
2

CHill60

Если вы когда-нибудь подумаете, что вам нужно использовать цикл с SQL, то подумайте еще раз!

То, что вам нужно, это что-то вроде (непроверенное)

update A set DepositAmount = b.DepositAmount, checkORcash   = b.checkORcash
from tableA A
left join tableB B on A.CID=B.CID
WHERE A.[month] = 'March'
Всегда помните, что базы данных на основе RDMS (SQL databases) основаны на "наборе". Вы описываете, что вы хотите сделать с набором данных, а не со строкой за раз. Эта статья (да, она моя) говорит все, что я пытаюсь сказать - Циклы обработки в SQL Server[^]


Рейтинг:
1

jpadwale

Я думаю, что вы не хотите обновлять, вы хотите добавить все мартовские записи из таблицы B в таблицу A, потому что есть несколько записей с мартом .
Просто измените свое решение следующим образом,


если существует(выберите top 1 * из [tableB], где Month= 'March' )
начать

вставить в [таблице tablea] (уголовного розыска,имя,месяц,DepositAmount,checkORcash) выберите B.УУР(выберите имя из [Customer_table] где ID=б.ЧИД),б.Месяц,б.DepositAmount,б.checkORcash из [таблицы B] B, где месяц='март'

конец

Как я понимаю ваш вопрос я предоставляю вышеприведенное решение,
дайте мне знать, если проблема связана с решением.