Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.08.2014, 12:46   #1
kluneev
Пользователь
 
Регистрация: 29.07.2014
Сообщений: 10
По умолчанию Очень сложный для меня запрос или объясните логику запроса

Есть 2 таблицы

Код HTML:
[FilteredLead]
и
[FilteredOpportunity]
В них есть столбцы со статусом
Код HTML:
statuscodename
и
statecodename
Это статусы. Их несколько типов:
для таблицы FilteredLead:
-Квалифицирована
-Дисквалифицирована
для таблицы FilteredOpportunity:
-В работе
-Упущена
-Выигрыш

Суть такова:
Необходим запрос который, вытащит эти данные в разные столбцы.

Вот пример того, до чего я пока додумался
Код HTML:
SELECT createdbyname, T1.status, T2.status
FROM 
	(
	SELECT statecodename AS Дисквал,createdbyname
	FROM FilteredLead
	WHERE statecodename = 'Квалифицированный'
	)T1,
	{
	SELECT statecodename AS Квал, createdbyname
	FROM FilteredLead
	WHERE statecodename = 'Дисквалифицирован'
	)T2
WHERE T1.status = T2.status
Спасибо.
kluneev вне форума Ответить с цитированием
Старый 01.08.2014, 13:09   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
WHERE T1.Createdbyname =T2.CreatedByname
---  но есть одно неудобство (будут только те у которых есть оба статуса)
Код:
select t0.createdbyname, t1.statuscode, t2.statuscode
from filterdLead
LEFT JOIN ( select createdbyname, statuscode
            from filteredLead
            where statuscode='квалифицированный' ) as T1 on T0.createdbyname  =T1.Createdbyname
LEFT JOIN ( select createdbyname, statuscode
            from filteredLead
            where statuscode='Дмисквалфицирован' ) as T2 on T0.createdbyname  =T2.Createdbyname
Код:
select createdbyname
, case when statecode ='квалифицированный' then 'квалифицированный' else NULL end as status1
, case when statecode ='Дисквалифицирован' then 'Дисквалифицирован' else NULL end as status2
from FilteredLead
если конечно же СУБД поддерживает опрератор case
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 01.08.2014 в 13:22.
evg_m вне форума Ответить с цитированием
Старый 01.08.2014, 13:21   #3
kluneev
Пользователь
 
Регистрация: 29.07.2014
Сообщений: 10
По умолчанию

Так, скорее всего мой код в неверном направлении.
Вот что хотелось бы получить.

Код HTML:
SELECT
  CASE WHEN statecodename='Квалифицированный' THEN 1 ELSE 0 END AS Квал,
  CASE WHEN statecodename='Дисквалифицирована' THEN 1 ELSE 0 END AS Дисквал
	CASE WHEN statuscodename='Упущена' THEN 1 ELSE 0 END AS Упущена,
	CASE WHEN statuscodename='Завершена' THEN 1 ELSE 0 END AS Выигрыш,
	CASE WHEN statuscodename='В работе'THEN 1 ELSE 0 END AS В работе
FROM FilteredLead JOIN LEFT FilteredOpportunity
kluneev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень сложный массив (для меня) СТУДЕНТ-БЕДАЛАГА Помощь студентам 7 23.05.2014 13:36
Сложный (для меня) SQL запрос Котикова Помощь студентам 1 17.08.2012 14:11
Сложный запрос для MySQL fioru SQL, базы данных 5 07.09.2011 22:45
Сложный sql запрос или запись Rusl92 PHP 5 25.08.2010 15:15
Помогите создать сложный запрос (или как писать код для столбца запроса) kukuanna Microsoft Office Access 0 24.07.2009 14:10