2014-09-09 2 views
0

У меня есть две таблицы SQL следующим образом:Заполнение одной таблицы с использованием другой таблицы в SQL Server

enter image description here

enter image description here

Как вы можете заметить, первая таблица имеет ежемесячный частоты (столбец даты) , а вторая таблица имеет ежеквартальную частоту. Вот то, что я хотел бы сделать:

  • Для каждого issueid из таблицы 1, я хотел бы посмотреть на дату, определить, что предыдущий конец квартала, и идти получать данные из таблицы 2, соответствующей этот выпуск за этот конец квартала и вставить его в первую таблицу в последних двух столбцах.

  • Например: take issue 123456 и date 1/31/2014. Предыдущий конец квартала - 12/31/2013. Я хотел бы перейти к таблице 1, скопировать q_exp и q_act, которые соответствуют этому номеру и 12/31/2013, и вставить его в первую таблицу.

Конечно, я хотел бы заполнить весь первый стол и свести к минимуму ручные вставки.

Любая помощь будет оценена! Благодаря!

+0

Вы знакомы с синтаксис, "вставить в table2 (field1) выберите field2 из table1 где бы то ни было"? –

ответ

0

Попробуйте следующий запрос

UPDATE issues 
SET q_exp=(SELECT TOP 1 q.q_exp 
      FROM quarterlyTable q 
      WHERE q.issueid=i.issueid 
      AND q.[date]<=i.[date] 
      ORDER BY q.[date] DESC) 
,q_act= (SELECT TOP 1 q.q_act 
      FROM quarterlyTable q 
      WHERE q.issueid=i.issueid 
      AND q.[date]<=i.[date] 
      ORDER BY q.[date] DESC) 
FROM issues i 
+0

Спасибо! Я попробую! – Mayou

+0

Я получаю следующие ошибки: Msg 4104, уровень 16, состояние 1, строка 1 Идентификатор из нескольких частей "i.issueid" не может быть связан. Msg 4104, уровень 16, состояние 1, строка 1 Идентификатор с несколькими частями "i.date" не может быть связан. – Mayou

+1

Обновлен запрос. Можете ли вы попробовать, работает это или нет? –

Смежные вопросы