|
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...)
|
|
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
|
псевдонимы колонок с типизирующими выражениями особым образом обрабатываются уже на клиенте не на скл-сервере
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший