У меня есть 3 таблицы с наборами данных varios. В одной из этих таблиц больше полей, как и все остальные.SQL JOIN умножение поля
Мне нужно присоединиться к нему для служб отчетов SQL. Но проблема в том, что если я присоединиться к ценности, я получаю следующий результат:
TABLE 1 TABLE 2
|ID| |ID|Calls|
|--| |--|-----|
| 1| | 2| 7|
| 2| | 3| 8|
| 3| | 4| 9|
С LEFT OUTER JOIN:
|ID|Calls|
|--|-----|
| 1| 7|
| 2| 8|
| 3| 9|
В третьей таблице:
|ID|DNIS|Calls|
|--|----|-----|
| 1|4711| 2|
| 1|4712| 3|
| 1|4713| 2|
| 2|4714| 2|
| 2|4715| 3|
| 2|4716| 3|
| 3|4717| 4|
| 3|4718| 3|
| 3|4719| 2|
Вместе с ПОЛНЫЙ ПРИСОЕДИНЕНИЕ
|ID|Calls|DNIS|Calls|
|--|-----|----|-----|
| 1| 7|4711| 2|
| 1| 7|4712| 3|
| 1| 7|4713| 2|
| 2| 8|4714| 2|
| 2| 8|4715| 3|
| 2| 8|4716| 3|
| 3| 9|4717| 4|
| 3| 9|4718| 3|
| 3| 9|4719| 2|
Thr Проблема заключается в том, что мы называем взаимозависимым полем «Звонки». Суммы в отчете все в 3 раза выше. Этот контур полностью динамичен и не может быть жестко закодирован. Поэтому я ищу динамическую возможность. Мне нужно что-то вроде этого.
|ID|Calls|DNIS|Calls|
|--|-----|----|-----|
| 1| 7|4711| 2|
| 1| NULL|4712| 3|
| 1| NULL|4713| 2|
| 2| 8|4714| 2|
| 2| NULL|4715| 3|
| 2| NULL|4716| 3|
| 3| 9|4717| 4|
| 3| NULL|4718| 3|
| 3| NULL|4719| 2|
У вас есть идея?
Мой testquery выглядит следующим образом DECLARE @ t1 TABLE ( идентификатор INT )
INSERT INTO @t1 SELECT 1
INSERT INTO @t1 SELECT 2
INSERT INTO @t1 SELECT 3
SELECT * FROM @t1
DECLARE @t2 TABLE (
id INT
,calls INT
)
INSERT INTO @t2 SELECT 1,3
INSERT INTO @t2 SELECT 2,4
INSERT INTO @t2 SELECT 3,5
DECLARE @t3 TABLE (
id INT
,DNIS INT
,cnt INT
)
INSERT INTO @t3 SELECT 1,1,3
INSERT INTO @t3 SELECT 1,2,4
INSERT INTO @t3 SELECT 1,3,5
INSERT INTO @t3 SELECT 2,1,3
INSERT INTO @t3 SELECT 2,2,4
INSERT INTO @t3 SELECT 2,3,5
INSERT INTO @t3 SELECT 3,1,3
INSERT INTO @t3 SELECT 3,2,4
INSERT INTO @t3 SELECT 3,3,5
SELECT
t1.id
,t2.calls
,t3.DNIS
,t3.CNT
FROM
@t1 as t1
FULL JOIN
@t3 as t3
on t1.id = t3.id
LEFT OUTER JOIN
@t2 as t2
on t1.id = t2.id
где запрос? – Asdfg
Большинство людей избегают этого, сворачивая результаты в отдельных запросах/подзапросах. Какова конечная форма желаемых данных - действительно ли это таблица с нулями, или вы планируете ее ускорить? –
Нет, эта таблица с нулями является окончательным результатом для моего отчета. – Frank