У меня есть следующий запрос, который получает данные из нескольких таблиц следующим образом
SELECT TOP (1000)
t.TicketID
,gg.[Name]
,FA.Phone
FROM #testtt gg inner join Market gm on gg.ID=gm.ID inner join MarketOption MO on gm.MarketID=MO.MarketID
inner join TicketDetail TD on TD.MarketOptionID=MO.MarketOptionID inner join Ticket t on t.TicketID=td.TicketID inner join Account FA on t.AccountID=FA.AccountID
, что дает мне следующий результат
Ticket |Name | Number
35689 |Jane |1259876325
78963 |Austin|7893256941
15896 |Raj |4589623597
Теперь у меня есть таблица следующего генератора, которая содержит около 500 строк
ID| Number | Flag
1 | SD78569 | 0
2 | 45G7y42 | 0
3 | 7U5Gt56 | 0
4 |F5Nhy45 | 0
5 |153F786 | 0
я пытаюсь добиться того, чтобы я хотел назначить число из таблицы генератора с флагом 0 для запроса, который был выполнен,
например, это мой ожидаемый результат
Ticket |Name | Phone |Number
35689 |Jane |1259876325 |SD78569
78963 |Austin|7893256941 |7U5Gt56
15896 |Raj |4589623597 |F5Nhy45
после присвоения номера флаг должен измениться на 1 в таблице генератора
Number | Flag
SD78569 | 1
45G7y42 | 0
7U5Gt56 | 1
F5Nhy45 | 1
153F786 | 0
Я немного сбит с толку относительно того, как этого добиться, поскольку я не знаю, как мне присоединиться к этим столам, поскольку для меня нет критериев присоединиться и изменить флаг, ваше руководство будет оценено.
Я пытался сделать что-то вроде этого, где я добавил временную таблицу в
IF OBJECT_ID('TempDB..#results') IS NOT NULL
BEGIN
DROP TABLE #results
END
SELECT TOP (1000)
t.TicketID
,gg.[Name]
,FA.Phone
,cast (null as nvarchar(25)) as GeneratorNumber // created a column to add the Number
into #Results
FROM #testtt gg inner join Market gm on gg.ID=gm.ID inner join MarketOption MO on gm.MarketID=MO.MarketID
inner join TicketDetail TD on TD.MarketOptionID=MO.MarketOptionID inner join Ticket t on t.TicketID=td.TicketID inner join Account FA on t.AccountID=FA.AccountID
insert into #results(GeneratorNumber)
select Number from dbo.Generator // i tried copying it like this but it gives me an error "cannot insert the value Null into Column" and then i am not sure how to update the flag for the fields that where copied.
where flag=0
// попытка
;With UpdateData AS (
Select GeneratorNumber,
ROW_NUMBER() over (ORDER BY [GeneratorNumber] DESC) AS RN
FROM #results
)
update #results set GeneratorNumber=Number
from dbo.Generator dg
inner join UpdateData on UpdateData.RN=dg.ID
select * from #results
Ticket |Name | Number |GeneratedNumber
35689 |Jane |1259876325 |SD78569
78963 |Austin|7893256941 |153F786
15896 |Raj |4589623597 |SD78569
75663 |kate |7893256452 |153F786 // as you can see its repeating the same numbers over and over i wanted it to use distinct numbers for each row