Имя: Пароль:
IT
 
1с++ ошибка: Null value is eliminated by an aggregate or other SET operation.
0 dk
 
17.09.12
15:47
Текст запроса см ниже
Текст ошибки:
State 01003, native 8153, message [Microsoft][ODBC SQL Server Driver][SQL Server]Warning: Null value is eliminated by an aggregate or other SET operation.
Что делать и кто виноват? )
Вываливается только на 1 клиенте, на остальных нормально выводит
1 dk
 
17.09.12
15:48
текст запроса

SELECT
   Влож.Группа Группа
,    Влож.Клиент Клиент
,    SUM(Влож.Долг) Долг
,    SUM(Влож.Оборот) Оборот
,    SUM(Влож.Кредит) Кредит
,    MAX(Влож.Отсрочка) Отсрочка
,    SUM(Влож.ПросроченоСум) ПросроченоСум
,    SUM(Влож.ПросроченоДн) ПросроченоДн
INTO #Должники
FROM
(SELECT
   СпрКонтр.ParentID Группа
,    СпрКонтрОсн.ID Клиент
,    РегВз.ДолгОстаток Долг
,    ЗапрОбороты.Оборот Оборот
,    ЗапрОбороты.Оборот - ЗапрОбороты.Стоимость Кредит
,    $ПоследнееЗначение.Контрагенты.Глубина(СпрКонтрОсн.ID, :ДатаКон) Отсрочка
,    0 ПросроченоСум
,    0 ПросроченоДн
FROM
   $РегистрОстатки.ВзаиморасчетыПокупателей(:ДатаКон~,,Фирма = $ПустойИД AND Клиент IN (SELECT Val FROM #Кл),Клиент,Долг) РегВз
LEFT JOIN (
SELECT
   $РегПрод.Клиент Клиент
,    SUM($РегПрод.Сумма) Оборот
,    SUM($РегПрод.Себестоимость) Стоимость
FROM
   _1sJourn Журнал
INNER JOIN
   $Регистр.Продажи РегПрод ON РегПрод.IDDoc = Журнал.IDDoc
WHERE
   Журнал.Date_Time_IDDoc BETWEEN :ДатаНач AND :ДатаКон~
   AND
   Журнал.RF5594 = 1
   AND $РегПрод.Клиент IN (SELECT Val FROM #Кл)
GROUP BY
   $РегПрод.Клиент
) as ЗапрОбороты ON ЗапрОбороты.Клиент = РегВз.Клиент
INNER JOIN
   $Справочник.Контрагенты СпрКонтр ON РегВз.Клиент = СпрКонтр.ID
INNER JOIN
   $Справочник.Контрагенты СпрКонтрОсн ON $СпрКонтр.ОсновнойКлиент = СпрКонтрОсн.ID
) ВЛОЖ
GROUP BY
   Влож.Группа,Влож.Клиент
HAVING
   SUM(Влож.Долг) >= 1
2 dk
 
17.09.12
15:50
или хотя бы на какой кусок кода грешить
3 zling
 
17.09.12
15:54
хм, у тебя там левое соед. есть, значить может быть нулл. Попробуй поставить isnull(aaaaa,0)
4 zling
 
17.09.12
15:57
,    isnull(ЗапрОбороты.Оборот,0) AS Оборот
,    isnull(ЗапрОбороты.Оборот,0) - isnull(ЗапрОбороты.Стоимость,0) AS Кредит

так попробуй
5 dk
 
17.09.12
15:57
причем без into нормально отрабатывает - просто пустая выборка по этому клиенту
6 zling
 
17.09.12
16:00
INTO #Должники - это результат помещ-ся во врем.таблицу
7 zling
 
17.09.12
16:00
а это весь запрос?
8 Ёпрст
 
17.09.12
16:03
(0)
а нафига вот это ?

,    SUM(Влож.ПросроченоДн) ПросроченоДн

при селекте вот этого

,    0 ПросроченоДн ?


И... вот это тоже зачет:

INNER JOIN
   $Справочник.Контрагенты СпрКонтр ON РегВз.Клиент = СпрКонтр.ID
INNER JOIN
   $Справочник.Контрагенты СпрКонтрОсн ON $СпрКонтр.ОсновнойКлиент = СпрКонтрОсн.ID


нужны только клиентосы, у которых в ОсновнойКлиент  - ссылка на самого себя ?
9 dk
 
17.09.12
16:03
(4) спасибо, помогло
10 dk
 
17.09.12
16:05
(8)
SUM(Влож.ПросроченоДн) ПросроченоДн - тупо колонку надо - пофиг

про иннеры мимо
11 zling
 
17.09.12
16:07
а зачем выборка во врем. таблицу, правда? :)
12 dk
 
17.09.12
16:08
там дальше еще пару запросов ко временной идет - отчет по просрочке дебеторки
13 Ёпрст
 
17.09.12
16:08
(10) для колонки так и пиши.. а про иннер, не мимо, а вопрос был.
14 Ёпрст
 
17.09.12
16:09
там агрегатная сумма на 0 - зря, как
15 dk
 
17.09.12
16:11
(13) надо часть реквизитов дергать из текущей карточки, а часть из основной карточки - вот и 2 иннера
16 Ёпрст
 
17.09.12
16:21
(15) :)
как это ?
У тебя отберутся только те сторки, в которых в реквизит  ОсновнойКлиент ссылка на этот эе элемент справочника.
И всё.
17 Ёпрст
 
17.09.12
16:23
вот и спрашиваю - оно точно так и надо ?
18 dk
 
18.09.12
07:14
(16) неверно, внимательно смотри по каким полям какого справочника делаю соединение
19 ЧеловекДуши
 
18.09.12
08:10
(18) Ёпрст4 прав, запрос отберет по обороту не все данные :)
20 ЧеловекДуши
 
18.09.12
08:22
+(18) "Незнакомец", а может прще было бы воспользоваться упрощенной функцией для временной таблицы?
Зачем усложнять через селект?

   глСоздатьВременнуюТаблицу("#СписокРеализаций","Val char(9)"); //4 вид, 9 ИД
   
   ТекстЗапроса="
   |Insert into #СписокРеализаций
   |Select Right($ПН.ДокОснование,9) as Val
   |    From $Документ.Реализация AS ПН(NOLOCK)
   |    INNER JOIN $ДокументСтроки.Реализация AS ПНстр(NOLOCK) ON ПНстр.IDDOC = ПН.IDDOC
   |    INNER JOIN _1SJOURN AS Журнал(NOLOCK) ON (ПН.IDDOC = Журнал.IDDOC) And (Журнал.IDDOCDEF = "+Мета.ИДДокумента("Реализация")+")
   |    LEFT OUTER JOIN $Справочник.Контрагенты AS Клиент(NOLOCK) ON $ПН.Контрагент = Клиент.ID
   |    LEFT OUTER JOIN $Справочник.ЮрЛица AS ЮрЛица(NOLOCK) ON (Left($Клиент.ЮрФизЛицо,4) = '"+СтрИДклнт+"')
   |            AND (Right($Клиент.ЮрФизЛицо,9) = ЮрЛица.ID)
   |    Where ((Журнал.CLOSED & 1) = 1)
   |        AND (Журнал.DATE_TIME_IDDOC >= :ВыбДатаНач)
   |        AND (Журнал.DATE_TIME_IDDOC <= :ВыбДатаКон~)
   |        AND $ПН.РеализацияОтменена = 0
   |        AND Left($ПН.ДокОснование,4) = '"+СтрИДзаяв+"'
21 Ёпрст
 
18.09.12
09:21
(18) давно посмотрел.. вопрос в (17) в силе
22 dk
 
18.09.12
11:29
аа, вы оба не впиливаете )))
это ж не типовая, в самой карточке клиента всегда заполнено поле ОсновнойКлиент, либо ссылка на самого себя, либо ссылка на другую карточку контрагента.
----
ссылка          оснклиент
клиент1         Клиент2
Клиент2         Клиент2
---------------
Если есть движения по клиент1, то  
СпрКонтр.ID  - Вернет Клиент1
СпрКонтрОсн.ID  - Вернет Клиент2
-----
просто текст запроса динамически меняется - данный запрос вернет только основных контров. Это верно. Но данные соберутся по всем подчиненным.
23 Ёпрст
 
18.09.12
11:31
(22) Какой наивный
24 Ёпрст
 
18.09.12
11:31
у тебя будут только строки, где

ссылка = оснКлиент и всё.
25 Ёпрст
 
18.09.12
11:35
отсюда вопрос в (17)
26 dk
 
18.09.12
11:44
где эти строки будут-то в исходных или после всех группировок
Данные соберутся по всем подчиненным и сгруппируются по основному
27 Ёпрст
 
18.09.12
12:33
(26) ё...

еще раз , после вот этого
INNER JOIN
   $Справочник.Контрагенты СпрКонтр ON РегВз.Клиент = СпрКонтр.ID
INNER JOIN
   $Справочник.Контрагенты СпрКонтрОсн ON $СпрКонтр.ОсновнойКлиент = СпрКонтрОсн.ID

останутся только строки, где ОсновнойКлиент = ССылке на сам справочник.
28 Ёпрст
 
18.09.12
12:36
+27 т.е если ты в #Кл положил следующих клиентосов:

ссылка          оснклиент
1.Вася        Вася
2.Вася        Федя
3.Вася        Марина
4.Федя        Вася
5.Федя        Федя
6.Федя        Ваня

и по ним были остатки, то после твоих иннеров, останутся только
1.Вася        Вася
5.Федя        Федя


Оно точно так и надо ?
29 dk
 
18.09.12
13:02
http://s014.radikal.ru/i327/1209/1b/d2249cd82ecd.jpg
продолжаем спор? ))
30 Ёпрст
 
18.09.12
13:46
(29) где то ты меня наёпываешь
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.