установить все значения из столбца как переменные - PullRequest
0 голосов
/ 16 мая 2018

Вот мой пример, и я ценю вашу помощь!

Я создал таблицу temp_table с двумя столбцами: agency_id и budget . В качестве следующего шага мне нужно использовать agency_id, чтобы узнать самую последнюю дату, когда был сообщен бюджет, который, конечно, различается. Поэтому я решил установить столбец agency_id в качестве переменной и вставить его в запрос, который генерирует данные с самой последней отчетной датой.

Это мой код, который не работает:

declare @agency int 
set @agency = (select agency_id from ##temp1)

Тем не менее, мне выдается следующее сообщение об ошибке: Подзапрос вернул более 1 значения. Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения.

И вот как я хотел это использовать:

select max(report_date), @agency from budgets

Как я могу решить это? Курсорный подход?

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 17 мая 2018
Try the below instead of Cursors


Create    TABLE   Temp( ID int IDENTITY(1,1),
Agency_id int,
budget int)
DECLARE   @I=1
DECLARE    @COUNT INT
DECLARE   @Agency
SELECT @COUNT = COUNT(*) FROM temp table
WHILE (@I<=@COUNT)
BEGIN 
SELECT @Agency = Agency FROM temp table WHERE ID = @I
SELECT max(report_date), Agency FROM budgets WHERE Agency = @Agency 
SET @I = @I+1;
END 
0 голосов
/ 16 мая 2018

Ваша задача заключается в том, что вы хотите сохранить список предметов, а затем выполнить расчет и предоставить список предметов и максимальную дату.SQL оптимизирует этот код для вас и предоставит вам этот список намного быстрее.

Вам нужно взглянуть на термин GROUP BY в SQL

SELECT Agency, MAX(Report_date) FROM Budgets GROUP BY agency

Советую взглянуть на документацию Microsoft :

или Документация w3Schools

Это также можно сделать быстрее, если правильно проиндексировать поля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...