Страницы: 1
RSS
SQL: получить комбинацию всех пар, даже при отсутствии значений
 
Добрый день!
У меня есть таблица с тремя полями: Дата, Наименование, Сумма. В записях все данные уже уникальные, т.е. пара Дата-Наименование повторяется только один раз (в примере это лист "База"). Я пытаюсь получить для каждой имеющейся даты соответствия из всех имеющихся наименований, даже если в таблице нет такой пары (как это должно выглядеть, видно на листе "Результат"). В случае, если такой пары нет, в графе Сумма должно выводиться пустое значение (NULL). Пробовал разными способами, но так ничего и не получилось.
 
Я в SQL не спец, но вроде как LEFT JOIN не может дать такой результат. Копайте в сторону FULL OUTER JOIN
Вот горшок пустой, он предмет простой...
 
Доброе время суток
Цитата
PooHkrd написал:
но вроде как LEFT JOIN не может дать такой результат.
Алексей, почему же? Просто нужно определить, что такое все пары, чего ТС просто постеснялся сделать. Исхожу из предположение, что это комбинация всех неповторяющихся дат и неповторяющихся наименований. Будет нечто вроде
Код
Select tbase.[Дата], tbase.[Наименование], tsource.[Сумма]
From (
    Select tdate.[Дата], tname.[Наименование] From
        (Select Distinct [Дата] From [База$]) tdate, (Select Distinct [Наименование] From [База$]) tname
    ) tbase 
Left Join [База$] tsource
    On (tbase.[Дата] = tsource.[Дата] And tbase.[Наименование] = tsource.[Наименование])
Order By tbase.[Дата], tbase.[Наименование]
 
Цитата
Андрей VG написал:
Просто нужно определить, что такое все пары, чего ТС просто постеснялся сделать
Расписал максимально подробно, приложил пример, все равно вам не угодил )  Большое спасибо, все работает! Сколько книг ни читай, попадаются такие задачки, которые нигде не встречались, и не хватает опыта, чтобы решить их своей логикой... Это удручает.

Цитата
PooHkrd написал:
Копайте в сторону  FULL OUTER JOIN
То ли я что-то не то делаю, то ли он в VBA не работает. Как и CROSS JOIN.
 
Цитата
Ungrateful написал:
не хватает опыта, чтобы решить их своей логикой.
Логика начинается не с опыта, а с определений.  Нет, определений, логическую цепочку не построить - будут одни догадки и шаманство. :)
Успехов.
Страницы: 1
Наверх