SQL JOIN 3 таблицы, уникальные строки, расчет по таблицам - PullRequest
3 голосов
/ 13 октября 2011

у меня 3 таблицы. У них одинаковые столбцы. Мне нужно объединить их в одну таблицу, чтобы у меня были только уникальные строки, столбцы количества должны быть вычислены по 3 таблицам.

например.

Таблица 1

Имя1, 2, 100,00

Имя 5, 3, 25,00


Таблица 2

Имя1, 2, 50,00


Таблица 3

Имя1, 2, 60,00


Желаемый результат:

Name1, 2, 90,00, т.е. рассчитывается как (100-60 + 50)

Name5, 3, 25.00

Есть идеи? Я пробовал объединение, но это не рассчитывает для меня и не показывает уникальные строки ....

Ответы [ 2 ]

3 голосов
/ 13 октября 2011

В этом решении я просто взял значение Min во втором столбце, поскольку вы не указали, как оно должно объединяться в трех таблицах.

Select Z.Name, Min( SomeInt ) As MinSomeInt
    , Sum( SomeDecimal ) As TotalSomeDecimal
From    (
        Select Name, SomeInt, SomeDecimal
        From Table1
        Union All
        Select Name, SomeInt, SomeDecimal
        From Table2
        Union All
        Select Name, SomeInt, SomeDecimal * -1
        From Table3
        ) As Z
Group By Z.Name
1 голос
/ 13 октября 2011

Довольно понятный вопрос. Используйте UNION ALL, чтобы объединить таблицы в одну запрашиваемую вещь, затем используйте GROUP BY, чтобы объединить строки, имеющие общее значение.

SELECT Col1, SUM(Col2) as Col2
FROM
(
SELECT Col1, Col2
FROM Table1
UNION ALL
SELECT Col1, Col2
FROM Table2
UNION ALL
SELECT Col1, Col2
FROM Table3
) as sub
GROUP BY Col1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...