Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Как передать функцию ДатаЧисло в SQL (число прочтений - 1957 )
AVenger
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 08. Января 2009
Как передать функцию ДатаЧисло в SQL
13. Мая 2010 :: 08:00
Печать  
Как передать эсовскую функцию ДатаЧисло(Дата) в запрос SQL ?
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Как передать функцию ДатаЧисло в SQL
Ответ #1 - 13. Мая 2010 :: 08:05
Печать  
Если считать ДатаЧисло надо исходя из значения поля запроса можно воспользоваться функциями SQL.
Например
Код
Выбрать все
DATEPART(day, ПолеЗапроса) 



Подробнее см. тут
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
AVenger
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 08. Января 2009
Re: Как передать функцию ДатаЧисло в SQL
Ответ #2 - 13. Мая 2010 :: 09:53
Печать  
Спасибо, тут встает другой вопрос Улыбка Когда делаю GROUP BY выдает ошибку Столбец "dbo.RA2351.SP2375" недопустим в списке выборки, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY. Вот текст запроса:
Код
Выбрать все
SELECT
dbo.RA2351.SP2343 as Номенклатура,
dbo.RA2351.SP2375 as Количество,
dbo.RA2351.SP2344 as Покупатель,
dbo._1SJOURN.IDDOCDEF as ДокЖурнала,
dbo.RA2351.IDDOC as ДокРегистра,
(CASE WHEN DATEPART(day,CAST(LEFT(DATE_TIME_IDDOC,8) AS SMALLDATETIME)) = DATEPART(day,'2010-15-01') THEN dbo.RA2351.SP2375 ELSE 0 END) as КолвоФункции
FROM
dbo._1SJOURN(NOLOCK)
LEFT OUTER JOIN
dbo.RA2351(NOLOCK) ON dbo._1SJOURN.IDDOC = dbo.RA2351.IDDOC
LEFT OUTER JOIN
dbo.SC84(NOLOCK) ON dbo.RA2351.SP2343 = dbo.SC84.ID
WHERE dbo.SC84.DESCR = 'Чайная' AND dbo._1SJOURN.DATE_TIME_IDDOC BETWEEN '20100101     0     0  ' AND '20102801     0     0  '
GROUP BY dbo.RA2351.SP2343
ORDER BY Номенклатура ASC 

Без нее все работает нормально. В чем может быть причина?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Как передать функцию ДатаЧисло в SQL
Ответ #3 - 13. Мая 2010 :: 10:05
Печать  
вместо
Код
Выбрать все
CASE WHEN DATEPART(day,CAST(LEFT(DATE_TIME_IDDOC,8) AS SMALLDATETIME)) = DATEPART(day,'2010-15-01')
 


напиши лучше
Код
Выбрать все
CASE WHEN LEFT(DATE_TIME_IDDOC,8)  = '20101501')
 



Ну и непонятно что дано и что хочешь получить


зачем тебе нужен  group by
агрегации же нет.
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Как передать функцию ДатаЧисло в SQL
Ответ #4 - 13. Мая 2010 :: 10:05
Печать  
Код
Выбрать все
dbo.RA2351.SP2375 as Количество, 


заменить  на
Код
Выбрать все
SUM(dbo.RA2351.SP2375) as Количество, 


и
Код
Выбрать все
(CASE WHEN DATEPART(day,CAST(LEFT(DATE_TIME_IDDOC,8) AS SMALLDATETIME)) = DATEPART(day,'2010-15-01') THEN dbo.RA2351.SP2375 ELSE 0 END) as КолвоФункции 


на
Код
Выбрать все
SUM((CASE WHEN DATEPART(day,CAST(LEFT(DATE_TIME_IDDOC,8) AS SMALLDATETIME)) = DATEPART(day,'2010-15-01') THEN dbo.RA2351.SP2375 ELSE 0 END)) as КолвоФункции 


А все остальное включить в Group By
  
Наверх
IP записан
 
AVenger
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 08. Января 2009
Re: Как передать функцию ДатаЧисло в SQL
Ответ #5 - 13. Мая 2010 :: 11:19
Печать  
Спасибо
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать