|
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) спишем на кривость моих рук :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |