У меня есть один запрос, в котором нет ничего особенного.Базовый выбор и множество объединений, но ничего сложного.
У меня есть второй запрос, в котором используются курсор и опорная точка.Это такой же сложный запрос, как я когда-либо делал (SQL noob).То, что я хотел бы сделать, это вставить второй запрос в первый и каким-то образом использовать выходные данные строки первого запроса во втором.Смущаюсь, я знаю.
Второй запрос выглядит следующим образом:
declare @num as varchar(50)
declare pno cursor for
select
p.part_key
from
part_table as p
where
p.part_status = "Prod"
open pno
fetch next from pno into @num
while @@fetch_status = 0
begin
select
@num as "Part Number",
[id1] as "Data1",
[id2] as "Data2",
[id3] as "Data3"
from
select
t1.qty * t2.cost as ExtCost,
t2.opcode as opcode
from
table1 as t1
join table2 as t2
on t1.id = t2.id
where
t1.part_key = @num
) t
pivot
(sum(extcost) for opcode in [id1], [id2], [id3])) pvt
fetch next from pno into @num
end
close pno
deallocate pno
Этот запрос выдает именно то, что я хочу, и это единственный способ узнать, что я могу получить эту информацию.И первый запрос выдаёт различную информацию, но ссылается на ту же группу «частей», которые я выбрал в этом сводном запросе.Итак, что я хотел бы сделать для каждой строки (т.е. part_key) в первом запросе, я хочу выплюнуть данные из второго запроса, связанного с этим part_key.
Так, например, первыйзапрос выдает что-то вроде этого:
PART KEY |q1DATA1 |q1DATA2
И второй запрос выплевывает:
PART KEY |[id1] |[id2] |[id3]
Что я хочу сделать, это:
PART KEY |q1DATA1 |q1DATA2 |[id1] |[id2] |[id3]
Я пытался просматривать подзапросы, но они, похоже, довольно ограничивают то, что я делаю.