Имя: Пароль:
IT
 
Сложное ветвление в запросах Как реализовать?
0 dwarfadelic
 
30.09.15
14:54
2 таблицы могут соединяться в запрос
[SRC] SELECT RptSheet.P21, RptSheet.P22, RptSheet.P27, RptSheet2.P14, RptSheet2.P15
FROM RptSheet LEFT JOIN RptSheet2 ON RptSheet.P5 = RptSheet2.P4;
[/SRC]
P22 - деталь Р27 - тип детали Р14 - фирма если есть Р15 - доп строка
результат см рисунок во вложении. Нужно сделать выборку чтобы в ней было вычисляемое поле которое выдавало
по каждой фирме (столбец P22) либо столбец P14 при условии что среди принадлежащих ей строк есть строка равная PBE в противном случае либо столбец P14 если P27=ПР иначе пустую строку .
Писать типа
[SRC]SELECT Iif(EXISTS(SELECT * FROM RptSheet2 WHERE P15='PBE'),P14, ... )[/SRC] не проканывает
[SRC]
SELECT DISTINCT RptSheet.P27 as r1, RptSheet.P22 as r2, IIf(RptSheet2.P15='PBE',RptSheet2.P14,IIf(RptSheet.P27='ПР' OR RptSheet.P27='М','Куплен','')) AS State
FROM RptSheet INNER JOIN RptSheet2 ON RptSheet.P5=RptSheet2.P4;[/SRC] тоже мало
1 Маратыч
 
30.09.15
14:56
(0) Ты бы хоть запятые расставил в своих условиях задачи.
2 vicof
 
30.09.15
15:00
case
3 vicof
 
30.09.15
15:01
сеанс вангования окончен, следующий
4 Маратыч
 
30.09.15
15:03
(3) Крут :)
5 dwarfadelic
 
30.09.15
15:17
Близок к победе пишу
SELECT DISTINCT t1.P27, t1.P22, IIf(Exists (SELECT * FROM RptSheet2 WHERE t1.P5=RptSheet2.P4 AND RptSheet2.P15='PBE' ),'P14',IIf(Exists (SELECT * FROM RptSheet2 WHERE t1.P5=RptSheet2.P4 AND (t1.P27='ПР' OR t1.P27='М') ),'Куплен','')) AS Выражение1
FROM RptSheet AS t1;
Близко. Только как получить сам P14 ?
6 dwarfadelic
 
30.09.15
15:21
Из RptSheet2 внутри Iif
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой