Имя: Пароль:
1C
1C 7.7
v7: Реализация в прямом запросе Все ВошедшиеВЗапрос, column prefix does not match
0 akaBrr
 
26.11.14
10:58
Временную таблицу создаю так:

CREATE TABLE #CD (day datetime,ware char(9),pos char(9),chk smallint,sale money)
INSERT INTO #CD
SELECT
Подзапрос.День as _day,
Подзапрос.Склад as ware,
Подзапрос.Касса as pos,
COUNT(Подзапрос.Чек) as chk,
SUM(Подзапрос.Сумма) as sale
FROM (SELECT
Дни.start_of_period as День
,ОтчетОПродажах.SP5636 as Склад
,ОтчетОПродажах.SP5099 as Касса
,ОтчетОПродажахСтроки.SP5798 as Чек
,SUM(ISNULL(ОтчетОПродажахСтроки.SP5107,0)) as Сумма
FROM
  #dd_2597995405 AS Дни
    LEFT JOIN _1SJOURN AS Журнал (nolock)
  ON LEFT(Журнал.DATE_TIME_IDDOC,8) = Дни.start_of_period
    LEFT JOIN DH5096 AS ОтчетОПродажах (nolock)
  ON ОтчетОПродажах.IDDOC = Журнал.IDDOC
    LEFT JOIN DT5096 AS ОтчетОПродажахСтроки (nolock)
  ON ОтчетОПродажахСтроки.IDDOC = ОтчетОПродажах.IDDOC
GROUP BY
Дни.start_of_period,ОтчетОПродажах.SP5636,ОтчетОПродажах.SP5099,ОтчетОПродажахСтроки.SP5798
HAVING SUM(ISNULL(ОтчетОПродажахСтроки.SP5107,0)) >= 50) AS Подзапрос
GROUP BY
    Подзапрос.День,Подзапрос.Склад,Подзапрос.Касса

Результат получаю так:

select days.day as _day,
СкладыИКассы.ware as ware,
СкладыИКассы.pos as pos,
isnull(cd.chk,0) as chk,
isnull(cd.sale,0) as sale
from
(select distinct day from #cd) as days,
(select distinct ware,pos from #cd) as СкладыИКассы
left join #cd as cd on days.day = cd.day and СкладыИКассы.ware = cd.ware and СкладыИКассы.pos = cd.pos
order by _day,ware,pos

скул сказал:

The column prefix 'days' does not match with a table name or alias name used in the query.

Не понятно как в таком случае организовать соединение. Почему в полях запроса я могу псевдоним days использовать, а в соединении не могу?
1 akaBrr
 
26.11.14
10:59
Уточню скул ругнулся на второй запрос.
2 akaBrr
 
26.11.14
11:03
Так работает:

select days.day as _day,
СкладыИКассы.ware as ware,
СкладыИКассы.pos as pos
from
(select distinct day from #cd) as days,
(select distinct ware,pos from #cd) as СкладыИКассы
3 akaBrr
 
26.11.14
11:06
Уточню текст ошибки:

Server: Msg 107, Level 16, State 2, Line 1

Не понятно, почему стал ругаться на первую строку.
4 akaBrr
 
26.11.14
11:14
(3) Все же не на первую, чтобы там скул не писал
5 Ёпрст
 
26.11.14
11:15
Это весь кол ?
Покажи код из отладки
6 Ёпрст
 
26.11.14
11:16
и.. алиясы в первом запросе в инсерте не нужны (тем более, что первый не верный.. имя поля day алияс _day)
7 Ёпрст
 
26.11.14
11:18
и, во втором запросе точно cross join нужен ?
8 akaBrr
 
26.11.14
11:19
(5) я пока в аналайзере отлаживаю второй запрос
(6) проверил во #cd именно day
(7) все дни и все пары склад + касса
9 Ёпрст
 
26.11.14
11:21
(8) верно, day.. а в инто селект ты пытаешься _day засунуть (хоть оно и игнорируется при инсерте, там алиясы вообще не нужны)
10 akaBrr
 
26.11.14
11:23
(9) с текстом запроса я мудрил, пока думал, похоже не сохраненный вариант в пост скопировал, в продакшене day
11 Ёпрст
 
26.11.14
11:23
Мот, у тебя твбличка days уже раньше где-то создана ?
12 Ёпрст
 
26.11.14
11:23
вот и не дает алияс на неё сделать ?
13 Ёпрст
 
26.11.14
11:24
ну поменяй на алияс Вася, к примеру.. должно работать там всё.
14 akaBrr
 
26.11.14
11:24
(11) хороший вопрос, сейчас сеанс грохну и заново все сделаю
15 Ёпрст
 
26.11.14
11:24
мот, русская буква где , не ?
16 akaBrr
 
26.11.14
11:25
(15) почему без левого соединения с cd запрос работает? а после добавления перестал, мне вот это не понятно, от слова совсем
17 Ёпрст
 
26.11.14
11:26
(16) должен работать..
18 akaBrr
 
26.11.14
11:34
(17) понятно, пойду думать
19 akaBrr
 
26.11.14
11:44
помогла обертка в виде подзапроса для кросс джойна, вопрос закрыт
20 Ёпрст
 
26.11.14
11:55
странно
21 Ёпрст
 
26.11.14
11:55
ну и ладно
22 akaBrr
 
26.11.14
11:59
(21) спишем на кривость моих рук :)
Основная теорема систематики: Новые системы плодят новые проблемы.