Как объединить по горизонтали результаты двух запросов?

Бессмысленный, но зато простой пример на псевдо-языке
SELECT contract AS ct, contractDate, subscriber, (SELECT cost FROM upload WHERE contract = ct)
FROM upload
То есть хочется как-то передать значение contract внутрь, чтобы там его использовать в условии. Возможно такое сделать?

P.S. У клиента могут быть международные и междугородние звонки, нужно чтобы запрос выводил стоимость и тех, и других в одну строку. Если использовать обычную группировку, вывод получится в две строки. А мой вопрос предполагает нечто вроде UNION, но только по горизонтали.
  • Вопрос задан
  • 1060 просмотров
Пригласить эксперта
Ответы на вопрос 2
NeiroNx
@NeiroNx
Программист
LEFT JOIN - для включения полей из других таблиц
GROUP BY для обьединения строк по выбраным полям
SELECT contract , contractDate, subscriber, SUM( cost ) AS 'cost'
FROM upload
GROUP BY contract , contractDate, subscriber

Складывает cost у одинаковых contract , contractDate, subscriber полей
Ответ написан
@naidzionik
DB developer
Select ct,
	contractDate,
        subscriber,
	'Междугордние',
	[Междугордние],
	'Международные',
	[Международные]
from (SELECT [contract] AS ct, contractDate, subscriber,[тип_звонка],cost  from upload ) t
	pivot (sum([cost]) for [тип_звонка] in ([Междугордние],[Международные])) pvt
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы