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

Откуда:
Сообщений: 29
Имеется поле в таблице Length с параметрами decimal (19,6) пытаюсь округлить до целых чисел ROUND (Length, 0) выдаёт ошибку Function argument count error. Что я делаю не так? В SQL новичок.
25 окт 13, 11:27    [15030539]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
LEGOMAX
Имеется поле в таблице Length с параметрами decimal (19,6) пытаюсь округлить до целых чисел ROUND (Length, 0) выдаёт ошибку Function argument count error. Что я делаю не так? В SQL новичок.

Приведите, пожалуйста, текст запроса, который вы выполняете.
25 окт 13, 11:31    [15030555]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
LEGOMAX
Member

Откуда:
Сообщений: 29
(CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE Length END) вот здеcm мне нужно округлить переменную Length
25 окт 13, 11:41    [15030610]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
LEGOMAX
(CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE Length END) вот здеcm мне нужно округлить переменную Length

Вы написали, что ошибка появилась. Так приведите запрос, который вызвал ошибку.
25 окт 13, 11:43    [15030632]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
LEGOMAX
Member

Откуда:
Сообщений: 29
(CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE Length END) этот запрос выполняется нормально, но переменная Length с 6 знаками после запятой выходит, пытаюсь сделать к примеру так: (CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE ROUND (Length, 0) END) но так не получается. Если нужно, то могу целиком текст вьюхи выложить.
25 окт 13, 11:51    [15030692]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
Glory
Member

Откуда:
Сообщений: 104760
LEGOMAX
(CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE Length END) этот запрос выполняется нормально,

Это - НЕ запрос. Это часть запроса
LEGOMAX
(CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE ROUND (Length, 0) END) но так не получается.


ROUND ((CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE Length END), 0)
25 окт 13, 11:54    [15030709]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
> Function argument count error

это где вы такую ошибку получаете?
25 окт 13, 11:55    [15030724]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
aleks2
Guest
LEGOMAX
(CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE Length END) этот запрос выполняется нормально, но переменная Length с 6 знаками после запятой выходит, пытаюсь сделать к примеру так: (CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE ROUND (Length, 0) END) но так не получается. Если нужно, то могу целиком текст вьюхи выложить.


Нафига никому не нужна ваша вьюха.

Ловите в вашей таблице КОНКРЕТНУЮ строку с данными, на которой происходит облом - и смотрите чего там в поле Length - вам сразу полегчает.
25 окт 13, 11:56    [15030730]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
LEGOMAX
Member

Откуда:
Сообщений: 29
Glory, если так ROUND ((CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE Length END), 0) то уже появляется ошибка Unable to parse expression

daw, в SQL Server Management Studio 2005
25 окт 13, 12:02    [15030781]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
> в SQL Server Management Studio 2005

это в конструкторе view что ли?
25 окт 13, 12:06    [15030813]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
может, так?
(CASE WHEN rtrim(dbo.Material.Artikul) IN ('DUB', 'DUS') THEN 0 ELSE ROUND ([Length], 0) END)
25 окт 13, 12:09    [15030841]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
Glory
Member

Откуда:
Сообщений: 104760
LEGOMAX
[b][/b] если так ROUND ((CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE Length END), 0) то уже появляется ошибка Unable to parse expression

ваш запрос компилируется вообще ?
25 окт 13, 12:10    [15030851]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31781
LEGOMAX
Glory, если так ROUND ((CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE Length END), 0) то уже появляется ошибка Unable to parse expression

daw, в SQL Server Management Studio 2005
Естественно ошибка, запросы обычно начинаются с SELECT
25 окт 13, 12:26    [15031021]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
LEGOMAX
Member

Откуда:
Сообщений: 29
daw, да, в конструкторе view
Glory, да, компилируется
Cygapb-007, не прокатило
alexeyvg, ну само собой начинается с SELECT

SELECT TOP (100) PERCENT dbo.ShippingLots.ShippingLotCode AS [ShippingLot.Code], dbo.ShippingLots.ShippingLotDescription AS [ShippingLot.Description],
dbo.ShippingLots.ShippingDate AS [ShippingLot.Date], dbo.ShippingLots.LorryPlate AS [ShippingLot.LorryPlate],
dbo.ShippingLots.Gate AS [ShippingLot.Gate], dbo.ShippingLots.NumberOfGates AS [ShippingLot.NumberOfGates], dbo.ShippingLots.DriverCode,
dbo.EstadoSubModelosPAF.Numero AS [SalesDoc.Number], dbo.EstadoSubModelosPAF.Version AS [SalesDoc.Version],
dbo.PAF.NumeroPedido AS [SalesDoc.OrderNumber], dbo.PAF.CIP AS [SalesDoc.MasterNumber], dbo.ContenidoPAF.Tipo,
(CASE WHEN Concepto = 'St' THEN 'St' ELSE '' END) AS Concepto, dbo.MaterialesBase.Descripcion AS [Unmounted.Description],
dbo.Materiales.Almacen AS Stock, dbo.PAF.Nombre AS [SalesDoc.Customer], dbo.PAF.Domicilio, dbo.PAF.Domicilio2, dbo.PAF.Localidad,
dbo.PAF.CodigoPostal, dbo.PAF.Provincia, dbo.PAF.Pais, dbo.PAF.Telefono, dbo.PAF.Obra AS [SalesDoc.Shipto],
dbo.PAF.DireccionObra AS [SalesDoc.ShipToAddress1], dbo.PAF.DireccionObra2 AS [SalesDoc.ShipToAddress2],
dbo.PAF.CodigoPostalObra AS [SalesDoc.ShipToPostalCode], dbo.PAF.LocalidadObra AS [SalesDoc.ShipToCity],
dbo.PAF.ProvinciaObra AS [SalesDoc.ShipToProvince], dbo.PAF.PaisObra AS [SalesDoc.ShipToCountry],
dbo.PAF.TelefonoObra AS [SalesDoc.ShipToPhone], dbo.PAF.ShipToFax AS [SalesDoc.ShipToFax],
dbo.PAF.ShipToContactName AS [SalesDoc.ShipToContacName], dbo.PAF.ShipToComments AS [SalesDoc.ShipToComments],
'[ShippingLot.Code],[SalesDoc.OrderNumber]asc ,[Unmounted.Description] asc' AS SortOrder, SUM(dbo.MaterialesPAF.Cantidad)
AS [Unmounted.Quantity], RTRIM(dbo.CMSContacts.Name) + N' ' + RTRIM(dbo.CMSContacts.FirstName) AS ResponsibleForMounting,
dbo.PAF.Comentario AS Comments, dbo.PAF.SalesmanCode, dbo.MaterialesBase.USR_PrintOnDeliveryNote, dbo.MaterialesBase.ReferenciaBase,
(CASE WHEN rtrim(dbo.MaterialesBase.ReferenciaBase) = 'F-Okno' THEN 0 WHEN rtrim(dbo.MaterialesBase.ReferenciaBase)
= 'F-MS' THEN 0 ELSE Longitud END) AS Longitud
, dbo.UW_GetMontages(dbo.MaterialesPAF.Numero, dbo.MaterialesPAF.Version) AS Montag,
dbo.Materiales.Referencia
FROM dbo.MaterialesBase INNER JOIN
dbo.Materiales ON dbo.MaterialesBase.ReferenciaBase = dbo.Materiales.ReferenciaBase INNER JOIN
dbo.MaterialesPAF INNER JOIN
dbo.EstadoSubModelosPAF ON dbo.MaterialesPAF.Numero = dbo.EstadoSubModelosPAF.Numero AND
dbo.MaterialesPAF.Version = dbo.EstadoSubModelosPAF.Version AND dbo.MaterialesPAF.Orden = dbo.EstadoSubModelosPAF.Orden AND
dbo.MaterialesPAF.SubModelId = dbo.EstadoSubModelosPAF.SubModel INNER JOIN
dbo.ShippingLots ON dbo.EstadoSubModelosPAF.ShippingLotCode = dbo.ShippingLots.ShippingLotCode INNER JOIN
dbo.PAF ON dbo.MaterialesPAF.Numero = dbo.PAF.Numero AND dbo.MaterialesPAF.Version = dbo.PAF.Version INNER JOIN
dbo.ContenidoPAF ON dbo.MaterialesPAF.Numero = dbo.ContenidoPAF.Numero AND dbo.MaterialesPAF.Version = dbo.ContenidoPAF.Version AND
dbo.MaterialesPAF.Orden = dbo.ContenidoPAF.Orden ON dbo.Materiales.Referencia = dbo.MaterialesPAF.Referencia LEFT OUTER JOIN
dbo.CMSContacts ON dbo.PAF.USR_MountageResponsible = dbo.CMSContacts.ContactId
GROUP BY dbo.ShippingLots.ShippingLotCode, dbo.ShippingLots.ShippingLotDescription, dbo.ShippingLots.ShippingDate, dbo.ShippingLots.LorryPlate,
dbo.ShippingLots.Gate, dbo.ShippingLots.NumberOfGates, dbo.ShippingLots.DriverCode, dbo.EstadoSubModelosPAF.Numero,
dbo.EstadoSubModelosPAF.Version, dbo.PAF.NumeroPedido, dbo.PAF.CIP, dbo.ContenidoPAF.Tipo,
(CASE WHEN Concepto = 'St' THEN 'St' ELSE '' END), dbo.MaterialesBase.Descripcion, dbo.Materiales.Almacen, dbo.PAF.Nombre, dbo.PAF.Domicilio,
dbo.PAF.Domicilio2, dbo.PAF.Localidad, dbo.PAF.CodigoPostal, dbo.PAF.Provincia, dbo.PAF.Pais, dbo.PAF.Telefono, dbo.PAF.Obra,
dbo.PAF.DireccionObra, dbo.PAF.DireccionObra2, dbo.PAF.CodigoPostalObra, dbo.PAF.LocalidadObra, dbo.PAF.ProvinciaObra, dbo.PAF.PaisObra,
dbo.PAF.TelefonoObra, dbo.PAF.ShipToFax, dbo.PAF.ShipToContactName, dbo.PAF.ShipToComments, RTRIM(dbo.CMSContacts.Name)
+ N' ' + RTRIM(dbo.CMSContacts.FirstName), dbo.PAF.Comentario, dbo.PAF.SalesmanCode, dbo.MaterialesBase.USR_PrintOnDeliveryNote,
dbo.MaterialesBase.ReferenciaBase, (CASE WHEN rtrim(dbo.MaterialesBase.ReferenciaBase)
= 'F-Okno' THEN 0 WHEN rtrim(dbo.MaterialesBase.ReferenciaBase) = 'F-MS' THEN 0 ELSE Longitud END),
dbo.UW_GetMontages(dbo.MaterialesPAF.Numero, dbo.MaterialesPAF.Version), dbo.Materiales.Referencia
25 окт 13, 14:06    [15031869]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
Гость333
Member

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

И где в этом запросе упоминавшееся ранее "(CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE Length END) "?
25 окт 13, 14:13    [15031941]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1887
дык это без round а как запрос с round-ом выглядит прямо копи пасте со студии? вместе с полным текстом ошибки
25 окт 13, 14:14    [15031951]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
LEGOMAX
Member

Откуда:
Сообщений: 29
Всем спасибо, особенно Glory!

ROUND ((CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE Length END); 0)

Нужно было в конструкторе view вместо запятой поставить точку с запятой, хотя в самом запросе запятая. Вопрос закрыт.
25 окт 13, 14:44    [15032297]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
LEGOMAX
Member

Откуда:
Сообщений: 29
Гость333, специально выделил красным цветом, просто изменил названия таблиц и переменных.
25 окт 13, 14:46    [15032308]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
iap
Member

Откуда: Москва
Сообщений: 47049
LEGOMAX
Всем спасибо, особенно Glory!

ROUND ((CASE WHEN rtrim(dbo.Material.Artikul) = 'DUB' THEN 0 WHEN rtrim(dbo.Material.Artikul) = 'DUS' THEN 0 ELSE Length END); 0)

Нужно было в конструкторе view вместо запятой поставить точку с запятой, хотя в самом запросе запятая. Вопрос закрыт.
Чо за фигня?
25 окт 13, 14:47    [15032319]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5135
LEGOMAX, м-да, пятница берет свое. Перечитайте еще раз про функцию ROUND().
25 окт 13, 15:46    [15032830]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
LEGOMAX
Гость333, специально выделил красным цветом, просто изменил названия таблиц и переменных.


вы вроде про РАУНД спрашивали, в ни в приведенном запросе, не в выделенном красном его нету

ну и ROUND(numeric_expression ;length) в T-Sql не работает
25 окт 13, 15:48    [15032849]     Ответить | Цитировать Сообщить модератору
 Re: стандартная функция округления ROUND выдаёт ошибку  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2396
ТС сам с собой и со своими тараканами общается, мы ему похоже не нужны ))
25 окт 13, 15:49    [15032858]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить