Имя: Пароль:
1C
1C 7.7
v7: В прямом запросе не видно поля из вложенного запроса
0 FobusVGrunt
 
12.02.16
18:33
Нужно найти разницу между кол. сделок и кол. звонков:
SELECT
Клиент,Ответственный,SUM(КолСделок)-SUM(КолЗвонки) AS Разница FROM  
         (SELECT
         Ответственный AS [Ответственный ]
        ,Клиент   AS [Клиент ]
        ,COUNT(ID) AS [КолСделок]
        ,0  AS [КолЗвонки]
         FROM [Справочник.срм_Сделка]
        WHERE  (ISMARK <> '*') AND (ДатаДок  between '20160101' and '20160212Я')
        GROUP BY  Ответственный,Клиент
        UNION ALL
        SELECT
         д.шОтветственный AS [Ответственный ]
        ,д.шКонтрагент   AS [Клиент ]
        ,0 AS [КолСделок]
        ,Count(ж.IDDOC) AS [КолЗвонки]
        FROM [Журнал] as ж
        LEFT  JOIN [Документ.срм_Событие] AS д ON  ж.IDDOC = д.IDDOC
        WHERE (ж.IDDOCDEF = '11EO') AND (ж.Date  between '20160101' and '20160212Я')  
        AND (ж.ismark <> '*') AND (д.шВидСобытия = '  11F4   ')
        GROUP BY шОтветственный,шКонтрагент
        ) as вт
GROUP BY Ответственный,Клиент

КолЗвонки и КолСделок видит из подзапроса, а Клиент и Ответственный пишет ошибку не найден столбец. Не пойму, что ни так. Так тоже не видит-вт.Клиент...
1 FobusVGrunt
 
12.02.16
18:38
(0) И еще может кто подскажет как можно вычислить разницу только положительную SUM(КолСделок)-SUM(КолЗвонки) - если это выражение меньше 0-ля, то ставить 0. Кроме как CASE SUM(КолСделок)-SUM(КолЗвонки) WHEN > 0 THEN  SUM(КолСделок)-SUM(КолЗвонки) ELSE 0 END. есть варианты?
2 mehfk
 
12.02.16
18:38
напиши select * from select и увидишь реальные имена столбцов
3 mehfk
 
12.02.16
18:39
(1) HAVING
4 FobusVGrunt
 
12.02.16
18:48
(2) я так делал, возвращает таблицу с столбцами:Ответственный,Клиент,КолСделок,КолЗвонки
5 FobusVGrunt
 
12.02.16
18:50
(3) спасибо, попробую для вычисление разницы
6 mehfk
 
12.02.16
18:52
Да ну, фигня какая-то. Включи отладку или поймай реальный  запрос профайлером.
7 mehfk
 
12.02.16
18:53
(5) грубо говоря HAVING это то же самое, что и  WHERE только можно агрегатные функции накладывать.
8 FobusVGrunt
 
12.02.16
19:30
Вот таблица которую возвращает :select * from (select...)
https://www.dropbox.com/s/x305h2rpm4b2ylj/Выборка.jpg?dl=0
9 FobusVGrunt
 
12.02.16
19:33
меняю * на Ответственный (select Ответственный from (select...) )
Ошибка: no such column: Ответственный
10 trad
 
12.02.16
19:36
либо пробелы в скобках убери, либо снаружи пиши тоже в скобках и с пробелами
11 FobusVGrunt
 
12.02.16
19:46
(10) Спасибо большое помогло, как это оно имя присваивало с пробелами, думал всегда отсекает. А если есть типитизация колонки[Клиент :Справочник.Контрагенты], то имя колонки "Клиент "
12 trad
 
12.02.16
19:56
псевдонимы колонок с типизирующими выражениями особым образом обрабатываются уже на клиенте не на скл-сервере
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс