У меня есть одна таблица, которая выглядит следующим образом:Объединение двух таблиц и вычисления разделяй SUM из результирующей таблицы в SQL Server
+---------------+---------------+-----------+-------+------+
| id_instrument | id_data_label | Date | Value | Note |
+---------------+---------------+-----------+-------+------+
| 1 | 57 | 1.10.2010 | 200 | NULL |
| 1 | 57 | 2.10.2010 | 190 | NULL |
| 1 | 57 | 3.10.2010 | 202 | NULL |
| | | | | |
+---------------+---------------+-----------+-------+------+
, а другой, который выглядит следующим образом:
+----------------+---------------+---------------+--------------+-------+-----------+------+
| id_fundamental | id_instrument | id_data_label | quarter_code | value | AnnDate | Note |
+----------------+---------------+---------------+--------------+-------+-----------+------+
| 1 | 1 | 20 | 20101 | 3 | 28.2.2010 | NULL |
| 2 | 1 | 20 | 20102 | 4 | 1.8.2010 | NULL |
| 3 | 1 | 20 | 20103 | 5 | 2.11.2010 | NULL |
| | | | | | | |
+----------------+---------------+---------------+--------------+-------+-----------+------+
Что Я хотел бы сделать это, чтобы объединить/соединить эти две таблицы в один таким образом, что я получаю что-то вроде этого:
+------------+--------------+--------------+----------+--------------+
| Date | Table1.Value | Table2.Value | AnnDate | quarter_code |
+------------+--------------+--------------+----------+--------------+
| 1.10.2010. | 200 | 3 | 1.8.2010 | 20102 |
| 2.10.2010. | 190 | 3 | 1.8.2010 | 20102 |
| 3.10.2010. | 202 | 3 | 1.8.2010 | 20102 |
| | | | | |
+------------+--------------+--------------+----------+--------------+
So Среда IDE a - упорядочить их по дате из таблицы 1, а так как Table2 Значения изменяются только при изменении AnnDate, мы заполняем таблицу Resulting теми же значениями из таблицы2.
После этого я хотел бы пройти результирующую таблицу и создать другую (итоговую таблицу) со следующим.
Дата 1.10.2010. возьмите последние 4 месяца (таким образом, это будет 1,8.2010 г. и т. д. 20.3.2010. 30.1.2010. 15.11.2009) и значения Table2 на тех AnnDate. Сделайте SUM из этих 4 значений, а затем разделите значение Table1 с этим SUM.
Таким образом, мы получили бы что-то вроде:
+-----------+---------------------------------------------------------------+
| Date | FinalValue |
+-----------+---------------------------------------------------------------+
| 1.10.2010 | 200/(Table2.Value on 1.8.2010+Table2.Value on 20.3.2010 +...) |
| | |
+-----------+---------------------------------------------------------------+
Есть ли способ, это может быть сделано?
EDIT:
Хм да теперь я вижу, что я на самом деле не сделал хорошую работу, объясняя это. То, что я хотел сказать, я стараюсь INNER JOIN, как это:
SELECT TableOne.Date, TableOne.Value, TableTwo.Value, TableTwo.AnnDate, TableTwo.quarter_code
FROM TableOne
INNER JOIN TableTwo ON TableOne.id_intrument=TableTwo.id_instrument WHERE TableOne.id_data_label = somevalue AND TableTwo.id_data_label = somevalue AND date > xxx AND date < yyy
И это внутреннее соединение возвращает 2620 * 40 строк, что означает для каждого AnnDate из table2 возвращает всю Дату от table1.
То, что я хочу, чтобы вернуть 2620 значения с датами из Table1 значений из table1 на эту дату и ценности из table2, которые отвечают на этот период дат
F.E. Table1:
+-------+-------+
| Date | Value |
+-------+-------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
+-------+-------+
Table2
+-------+---------+
| Value | AnnDate |
+-------+---------+
| x | 1 |
| y | 4 |
+-------+---------+
Результирующая таблица:
+-------+---------+---------+
| Date | ValueT1 | ValueT2 |
+-------+---------+---------+
| 1 | a | x |
| 2 | b | x |
| 3 | c | x |
| 4 | d | y |
+-------+---------+---------+
Не совсем ясно, как вы соединяетесь с таблицей 1 и таблицей 2 вместе, чтобы получить промежуточную таблицу (одну с 5 колонами). –
Хорошо, дайте мне попробовать и очистите его. Я хотел бы присоединиться к ним так, чтобы первый столбец результирующей таблицы был Date from Table1. Второй столбец - значение из таблицы2, а столбец thrid - значение из таблицы 3. Проблема состоит в том, что таблица1 имеет 2620 строк, а таблица2 имеет 40 строк. значения в таблице 2 изменяются только в AnnDate. Итак, я хочу, чтобы в итоговой таблице было 2620 строк с значениями table1 и значениями из таблицы2, которые должны быть заполнены для дат, где нет изменений с последним значением. Я не знаю, сумели ли вы меня понять. Сожалею. –
Второй столбец - значение из таблицы2, а столбец thrid - значение из таблицы3? Где Table3? –