Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Помогите с запросом (число прочтений - 6732 )
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Помогите с запросом
Ответ #15 - 23. Декабря 2008 :: 12:07
Печать  
RuporAbsurda писал(а) 23. Декабря 2008 :: 11:47:
Если ставить 16, то
Syntax error converting datetime from character string.
А откуда такая цифра 16? В этом поле 8 - дата 6- время и 9 id документа

странно как то.
но тогда так. даже еще быстрее работать будет :
Код
Выбрать все
|SELECT
|MAX(tp.date_time_docid) ,
|tp.ktsc0 AS Kt,
| right(tp.date_time_docid,9) AS x_docid
|FROM
|  _1sentry AS tp (nolock)
| Where
|  (tp.date_time_docid >ate01) AND
|  (tp.KTSC0 IN (SELECT val FROM #ktg)) AND
|  tp.accktid IN (SELECT val FROM #accs) AND
|  ((tp.AccDtId IN (SELECT val FROM #accsd01)) OR (tp.AccDtId IN (SELECT val FROM #accsd02))) AND
|  (tp.ACTIVE='')
group by Kt,x_docid 


  
Наверх
 
IP записан
 
RuporAbsurda
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Re: Помогите с запросом
Ответ #16 - 23. Декабря 2008 :: 12:25
Печать  
Нет отбор не происходит вываливаются все документы.
  
Наверх
 
IP записан
 
RuporAbsurda
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 413
Зарегистрирован: 29. Июня 2006
Re: Помогите с запросом
Ответ #17 - 25. Декабря 2008 :: 12:41
Печать  
Третий день бъюсь ничего не получается. Если в выборке присуствует, еще что то кроме даты MAX не работает.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с запросом
Ответ #18 - 25. Декабря 2008 :: 19:19
Печать  
Простое, но, наверно, не самое эффективное, решение -
Код
Выбрать все
set nocount on

SELECT
    MAX(tp.date_time_docid) as date_time_docid,
    tp.ktsc0
into #sq
FROM
    _1sentry AS tp (nolock)
Where
    (tp.date_time_docid between :Date01 and :Date02 ~) AND
    (tp.KTSC0 IN (SELECT val FROM #ktg)) AND
    tp.accktid IN (SELECT val FROM #accs) AND
    ((tp.AccDtId IN (SELECT val FROM #accsd01)) OR (tp.AccDtId IN (SELECT val FROM #accsd02))) AND
    (tp.ACTIVE='')
GROUP BY  
    tp.ktsc0

SELECT
    CAST (LEFT(tp.date_time_docid, 8) as DateTime) as ДатаДк ,
    tp.ktsc0 AS Kt,
    right(tp.date_time_docid, 9) AS Док,  
    jur.iddocdef As Док_вид,
    SUM(tp.SUM_) AS sum_op  
FROM
    _1sentry AS tp (nolock)
    inner join _1sjourn AS jur (nolock) on tp.date_time_docid = jur.date_time_iddoc
    inner join #sq sq on tp.date_time_docid = sq.date_time_docid and tp.ktsc0 = sq.ktsc0
Where
    (tp.date_time_docid between :Date01 and :Date02 ~) AND
    (tp.KTSC0 IN (SELECT val FROM #ktg)) AND
    tp.accktid IN (SELECT val FROM #accs) AND
    ((tp.AccDtId IN (SELECT val FROM #accsd01)) OR (tp.AccDtId IN (SELECT val FROM #accsd02))) AND
    (tp.ACTIVE='')
GROUP BY  
    tp.ktsc0,
    tp.date_time_docid,
    jur.iddocdef  



#accsd01 и #accsd02 стоит в одну таблицу сложить.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Помогите с запросом
Ответ #19 - 28. Декабря 2008 :: 11:01
Печать  
Вот код

Код
Выбрать все
|SELECT
|MAX(tp.date_time_docid) ,
|tp.ktsc0 AS Kt,
|FROM
|  _1sentry AS tp (nolock)
| Where
|  (tp.date_time_docid >ate01) AND
|  (tp.KTSC0 IN (SELECT val FROM #ktg)) AND
|  tp.accktid IN (SELECT val FROM #accs) AND
|  ((tp.AccDtId IN (SELECT val FROM #accsd01)) OR (tp.AccDtId IN (SELECT val FROM #accsd02))) AND
|  (tp.ACTIVE='')
group by tp.ktsc0
 



ps долго не отвечал т.к. вирус "съел" компьютер
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать