Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 проблема case и CONVERT(char)  [new]
кириллk
Member

Откуда:
Сообщений: 1062
доброе утро!

Написал запрос , грязный :)

Ошибка "Тип данных операнда char недопустим для оператора subtract."

CONVERT(char(10), DATEADD(DAY, DATEDIFF(DAY,'1900',CONVERT(char(8), DATASASHA.date, 112))/7*7,'1900'),20) [начало недели],
CONVERT(char(10), DATEADD(DAY,6+DATEDIFF(DAY,'1900',CONVERT(char(8), DATASASHA.date, 112))/7*7,'1900'),20) [конец недели],
CONVERT(char(10), Start_date_s, 20) as [x],
CONVERT(char(10),End_date_s, 20) as [y],

'считаю дни' = CASE
WHEN

CONVERT(char(10),End_date_s, 20)<CONVERT(char(10),End_date_s, 20)

THEN

sum(CONVERT(char(10), DATEADD(DAY,6+DATEDIFF(DAY,'1900',CONVERT(char(8), DATASASHA.date, 112))/7*7,'1900'),20)-CONVERT(char(10), Start_date_s, 20))
END ,
13 мар 12, 13:02    [12238177]     Ответить | Цитировать Сообщить модератору
 Re: проблема case и CONVERT(char)  [new]
кириллk
Member

Откуда:
Сообщений: 1062
кириллk,

Нашел решение через DATEDIFF
13 мар 12, 13:11    [12238274]     Ответить | Цитировать Сообщить модератору
 Re: проблема case и CONVERT(char)  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
кириллk
доброе утро!

Написал запрос , грязный :)

Ошибка "Тип данных операнда char недопустим для оператора subtract."

CONVERT(char(10), DATEADD(DAY, DATEDIFF(DAY,'1900',CONVERT(char(8), DATASASHA.date, 112))/7*7,'1900'),20) [начало недели],
CONVERT(char(10), DATEADD(DAY,6+DATEDIFF(DAY,'1900',CONVERT(char(8), DATASASHA.date, 112))/7*7,'1900'),20) [конец недели],
CONVERT(char(10), Start_date_s, 20) as [x],
CONVERT(char(10),End_date_s, 20) as [y],

'считаю дни' = CASE
WHEN

CONVERT(char(10),End_date_s, 20)<CONVERT(char(10),End_date_s, 20)

THEN

sum(CONVERT(char(10), DATEADD(DAY,6+DATEDIFF(DAY,'1900',CONVERT(char(8), DATASASHA.date, 112))/7*7,'1900'),20)-CONVERT(char(10), Start_date_s, 20))
END ,
Суммировать строковые выражения в функции SUM() сервер, конечно же, не умеет.
Да и вычесть из одной строки другую не может.
13 мар 12, 14:10    [12238939]     Ответить | Цитировать Сообщить модератору
 Re: проблема case и CONVERT(char)  [new]
кириллk
Member

Откуда:
Сообщений: 1062
iap,

Возникла большая проблема:



'количество дней' = CASE

WHEN
Start_date
and
End_date

THEN
DATEDIFF(day,
Start_date_s,

WHEN
Start_date
and
End_date

THEN
DATEDIFF(day,
Start_date_s,

end,

'цена' = CASE

WHEN
Start_date
and
End_date

THEN
DATEDIFF(day,
Start_date_s,

WHEN
Start_date
and
End_date

THEN
DATEDIFF(day,
Start_date_s,

end,


Вопрос как умножить 'количество дней' из одного case на 'цена' из другого кейса???


Очень жду ответа!
13 мар 12, 17:12    [12241192]     Ответить | Цитировать Сообщить модератору
 Re: проблема case и CONVERT(char)  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
кириллk
iap,

Возникла большая проблема:



'количество дней' = CASE

WHEN
Start_date
and
End_date

THEN
DATEDIFF(day,
Start_date_s,

WHEN
Start_date
and
End_date

THEN
DATEDIFF(day,
Start_date_s,

end,

'цена' = CASE

WHEN
Start_date
and
End_date

THEN
DATEDIFF(day,
Start_date_s,

WHEN
Start_date
and
End_date

THEN
DATEDIFF(day,
Start_date_s,

end,


Вопрос как умножить 'количество дней' из одного case на 'цена' из другого кейса???


Очень жду ответа!
Что Вы написали?
Я не понимаю.

P.S. Тег SRС наверху редактора сообщений видели?
13 мар 12, 17:17    [12241258]     Ответить | Цитировать Сообщить модератору
 Re: проблема case и CONVERT(char)  [new]
кириллk
Member

Откуда:
Сообщений: 1062
iap,

есть 2 case ( цена и количество)
они возвращают 2 столбца

как мне перемножить case ?
13 мар 12, 17:19    [12241277]     Ответить | Цитировать Сообщить модератору
 Re: проблема case и CONVERT(char)  [new]
Glory
Member

Откуда:
Сообщений: 104751
кириллk
как мне перемножить case ?

Используя оператор умножения - *
13 мар 12, 17:21    [12241330]     Ответить | Цитировать Сообщить модератору
 Re: проблема case и CONVERT(char)  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
кириллk,

SELECT *, cs1*cs2 m FROM (
SELECT CASE WHEN 1=1 THEN 1 ELSE 0 END cs1, cs2=CASE WHEN 2=2 THEN 2 ELSE 0 END
) t
13 мар 12, 17:25    [12241392]     Ответить | Цитировать Сообщить модератору
 Re: проблема case и CONVERT(char)  [new]
кириллk
Member

Откуда:
Сообщений: 1062
Glory,

select CASE... END * CASE....END from t1 ?
13 мар 12, 17:26    [12241415]     Ответить | Цитировать Сообщить модератору
 Re: проблема case и CONVERT(char)  [new]
кириллk
Member

Откуда:
Сообщений: 1062
кириллk,

Огромное всем спасибо за помощь!!!!
13 мар 12, 17:27    [12241432]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить