![]() |
![]() |
Daisy 24.06.2004 - 17:32 |
Пытаюсь написать запрос в SQL по выводу остатков на 5 марта по складу с кодом 060123. Проблема вот в чем: при объединении таблиц не сворачивает строки, то есть вывод типа Товар1 10, Товар1 -5. Есть знающие люди? где моя ошибка??? Заранее спасибо текст запроса SELECT SC31.DESCR,SC33.CODE,SC33.DESCR, CONVERT( CHAR( 20 ) , Sum( RG99.SP102 ) ) FROM RG99, SC31, SC33 WHERE ( RG99.SP101 = SC33.ID ) AND ( RG99.SP100 = SC31.ID ) AND ( CONVERT ( DATETIME , RG99.PERIOD ) = CONVERT ( DATETIME , '02.01.2004' ) ) AND ( RTRIM( LTRIM ( SC31.CODE )) Like '060123' ) GROUP BY SC31.DESCR,SC33.CODE, SC33.DESCR UNION ALL SELECT SC31.DESCR,SC33.CODE, SC33.DESCR, CONVERT( CHAR( 20 ) , Sum( RA99.SP102 * ( 1 - 2 * RA99.DEBKRED ) ) ) FROM RA99, SC31, SC33, _1SJOURN WHERE ( RA99.SP101 = SC33.ID ) AND ( RA99.SP100 = SC31.ID ) AND ( RA99.IDDOC = _1SJOURN.IDDOC ) AND ( CONVERT ( DATETIME , LEFT(_1SJOURN.DATE_TIME_IDDOC , 8 )) >= CONVERT ( DATETIME , '03.01.2004') ) AND ( CONVERT ( DATETIME , LEFT(_1SJOURN.DATE_TIME_IDDOC , 8 )) <= CONVERT ( DATETIME , '03.05.2004') ) AND ( RTRIM( LTRIM ( SC31.CODE )) Like '060123' ) GROUP BY SC31.DESCR ,SC33.CODE, SC33.DESCR ORDER BY SC31.DESCR, SC33.DESCR |
Shannon 1 - 24.06.2004 - 17:36 |
Что-то с группировкой, нет? Попробуй заменить в обоих подзапросах вместо GROUP BY SC31.DESCR, SC33.CODE, SC33.DESCR на GROUP BY SC31.DESCR, SC33.DESCR |
Gloom 2 - 24.06.2004 - 17:38 | агрегирование надо к юниону целиком применить |
Daisy 3 - 24.06.2004 - 17:38 |
Пишет ошибку:(( Server: Msg 8120, Level 16, State 1, Line 1 Column 'SC33.CODE' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. |
Shannon 4 - 24.06.2004 - 17:41 | 3: Сорри... Чёрт, и в самом деле - (2). |
Daisy 5 - 24.06.2004 - 17:41 | (2)Извините, я новичок в этом деле. Можно сказать это мой первый запрос. Агрегирование, это в смысле GROUP BY? |
Sadovnikov 6 - 24.06.2004 - 17:43 |
(0) Загляни сюда: http://www.perlscript.ru/v77_25.shtml#news |
Daisy 7 - 24.06.2004 - 17:49 | спасибо за ссылку, я туда уже раньше заглядывала. Но знаете такое бывает, там все понятно, а что у меня не так не понимаю. |
Windrose 8 - 24.06.2004 - 17:51 | используй свой запрос как подзапрос а ао нему по полям делай сумм |
Antonio 9 - 24.06.2004 - 17:55 |
(0) зачем вот это: CONVERT( CHAR( 20 ) , Sum( RG99.SP102 ) ) CONVERT( CHAR( 20 ) , Sum( RA99.SP102 * ( 1 - 2 * RA99.DEBKRED ) ) ) зачем преобразуешь к char(20)? |
Daisy 10 - 24.06.2004 - 18:00 | это я переделывала из другого запроса (в инете) нашла. Не знаю зачем там это. Но если убрать ничего не меняется. |
Daisy 11 - 24.06.2004 - 18:02 |
(8) а можно поподробней...? а то ставлю скобки в начале в конце пишу в начале SELECT SC31.DESCR,SC33.CODE,SC33.DESCR, Что здесь написать?: FROM |
Vaicartana 12 - 24.06.2004 - 18:04 | вместо изобретения велосипеда лучше бы 1С++ начали изучать, где подобные запросы мета-парсером на ура проходят |
Daisy 13 - 24.06.2004 - 18:07 | (12) 1С++ уже скачала, но мне кажется для начала надо основы понять с нуля. |
Daisy 14 - 24.06.2004 - 18:11 | А может кто-нибудь напишет как сделать? я была бы очень благодарна |
Daisy 15 - 24.06.2004 - 18:13 | Все равно всем спасибо! по крайней мере новые идеи, а то я уже иссякла |
Antonio 16 - 24.06.2004 - 18:20 |
(11) select t.DESCR,t.CODE,t.DESCR1, sum(t.s) from ( SELECT SC31.DESCR,SC33.CODE,SC33.DESCR descr1, RG99.SP102 s FROM RG99, SC31, SC33 WHERE ( RG99.SP101 = SC33.ID ) AND ( RG99.SP100 = SC31.ID ) AND ( CONVERT ( DATETIME , RG99.PERIOD ) = CONVERT ( DATETIME , '02.01.2004' ) ) AND ( RTRIM( LTRIM ( SC31.CODE )) Like '060123' ) GROUP BY SC31.DESCR,SC33.CODE, SC33.DESCR UNION ALL SELECT SC31.DESCR,SC33.CODE, SC33.DESCR descr1, RA99.SP102 * ( 1 - 2 * RA99.DEBKRED ) s FROM RA99, SC31, SC33, _1SJOURN WHERE ( RA99.SP101 = SC33.ID ) AND ( RA99.SP100 = SC31.ID ) AND ( RA99.IDDOC = _1SJOURN.IDDOC ) AND ( CONVERT ( DATETIME , LEFT(_1SJOURN.DATE_TIME_IDDOC , 8 )) >= CONVERT ( DATETIME , '03.01.2004') ) AND ( CONVERT ( DATETIME , LEFT(_1SJOURN.DATE_TIME_IDDOC , 8 )) <= CONVERT ( DATETIME , '03.05.2004') ) AND ( RTRIM( LTRIM ( SC31.CODE )) Like '060123' ) ) t group by t.DESCR,t.CODE,t.DESCR1 order by t.DESCR,t.CODE,t.DESCR1 |
Windrose 17 - 24.06.2004 - 18:20 |
Мне просто лень княпать стоко ну типа Select tbl.Name,tbl.Code, sum(tbl.ost) from (SELECT SC31.DESCR,SC33.CODE,SC33.DESCR, CONVERT( CHAR( 20 ) , Sum( RG99.SP102 ) ) FROM RG99, SC31, SC33 WHERE ( RG99.SP101 = SC33.ID ) AND ( RG99.SP100 = SC31.ID ) AND ( CONVERT ( DATETIME , RG99.PERIOD ) = CONVERT ( DATETIME , '02.01.2004' ) ) AND ( RTRIM( LTRIM ( SC31.CODE )) Like '060123' ) GROUP BY SC31.DESCR,SC33.CODE, SC33.DESCR UNION ALL SELECT SC31.DESCR,SC33.CODE, SC33.DESCR, CONVERT( CHAR( 20 ) , Sum( RA99.SP102 * ( 1 - 2 * RA99.DEBKRED ) ) ) FROM RA99, SC31, SC33, _1SJOURN WHERE ( RA99.SP101 = SC33.ID ) AND ( RA99.SP100 = SC31.ID ) AND ( RA99.IDDOC = _1SJOURN.IDDOC ) AND ( CONVERT ( DATETIME , LEFT(_1SJOURN.DATE_TIME_IDDOC , 8 )) >= CONVERT ( DATETIME , '03.01.2004') ) AND ( CONVERT ( DATETIME , LEFT(_1SJOURN.DATE_TIME_IDDOC , 8 )) <= CONVERT ( DATETIME , '03.05.2004') ) AND ( RTRIM( LTRIM ( SC31.CODE )) Like '060123' ) GROUP BY SC31.DESCR ,SC33.CODE, SC33.DESCR ORDER BY SC31.DESCR, SC33.DESCR )ost group by ost.name ost.code order by ost.name |
Antonio 18 - 24.06.2004 - 18:22 |
+(16) GROUP BY SC31.DESCR,SC33.CODE, SC33.DESCR надо убрать |
Windrose 19 - 24.06.2004 - 18:22 | Ой замени в начале tbl на ost |
Antonio 20 - 24.06.2004 - 18:24 | (17) не взлетит :) |
Vaicartana 21 - 24.06.2004 - 18:28 |
2 (13) перед мета-запросом напиши Бд.Оладка(1); Бд.Открыть(ТекстЗапроса); ,где Бд - объект ODBCRecordSet . он тебе весь запрос и вывалит в лог. . Вместо ф-ии CONVERT лучше использовать стандарт даты для ОДБС драйвера {d '01-12-2003'} |
Windrose 22 - 24.06.2004 - 18:28 | конечно не взлетит! я даю удочку а не рыбу |
Windrose 23 - 24.06.2004 - 18:32 | Кстати слазь на www.1csql.ru там есть вааще просто как делать через тойскл |
toypaul 24 - 24.06.2004 - 18:55 | (22) тебя могут забанить за такую активную рекламу :). предупреждаю ;)... |
Daisy 25 - 25.06.2004 - 11:05 |
Супер!!! все получилось!!! Спасибо огромное!!! Расцеловать вас всех что-ли:) Кстати, еще один вопрос по ходу. Так в чем лучше учится работать: 1С++, ToySQL, Rainbow, TSQL? а то что-то совсем запуталась. Если не лень поделитесь мнением. |
МуМу 26 - 25.06.2004 - 11:10 | Transact SQL круче всего! |
Daisy 27 - 25.06.2004 - 11:11 | (26) можно уточнить почему? |