Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
LEGOMAX Member Откуда: Сообщений: 29 |
Имеется поле в таблице Length с параметрами decimal (19,6) пытаюсь округлить до целых чисел ROUND (Length, 0) выдаёт ошибку Function argument count error. Что я делаю не так? В SQL новичок. |
25 окт 13, 11:27 [15030539] Ответить | Цитировать Сообщить модератору |
Сергей Викт. Member Откуда: Москва Сообщений: 888 |
Приведите, пожалуйста, текст запроса, который вы выполняете. |
||
25 окт 13, 11:31 [15030555] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Сергей Викт. Member Откуда: Москва Сообщений: 888 |
Вы написали, что ошибка появилась. Так приведите запрос, который вызвал ошибку. |
||
25 окт 13, 11:43 [15030632] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Это - НЕ запрос. Это часть запроса
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] Ответить | Цитировать Сообщить модератору |
daw Member Откуда: Муром -> Москва Сообщений: 7381 |
> Function argument count error это где вы такую ошибку получаете? |
25 окт 13, 11:55 [15030724] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
Нафига никому не нужна ваша вьюха. Ловите в вашей таблице КОНКРЕТНУЮ строку с данными, на которой происходит облом - и смотрите чего там в поле Length - вам сразу полегчает. |
||
25 окт 13, 11:56 [15030730] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
daw Member Откуда: Муром -> Москва Сообщений: 7381 |
> в SQL Server Management Studio 2005 это в конструкторе view что ли? |
25 окт 13, 12:06 [15030813] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
ваш запрос компилируется вообще ? |
||
25 окт 13, 12:10 [15030851] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31781 |
|
||
25 окт 13, 12:26 [15031021] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Гость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] Ответить | Цитировать Сообщить модератору |
LexusR Member Откуда: Novosibirsk Сообщений: 1887 |
дык это без round а как запрос с round-ом выглядит прямо копи пасте со студии? вместе с полным текстом ошибки |
25 окт 13, 14:14 [15031951] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
LEGOMAX Member Откуда: Сообщений: 29 |
Гость333, специально выделил красным цветом, просто изменил названия таблиц и переменных. |
25 окт 13, 14:46 [15032308] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47049 |
|
||
25 окт 13, 14:47 [15032319] Ответить | Цитировать Сообщить модератору |
Александр52 Member Откуда: Кокосовые острова ส็็็็็ Сообщений: 5135 |
LEGOMAX, м-да, пятница берет свое. Перечитайте еще раз про функцию ROUND(). |
25 окт 13, 15:46 [15032830] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
вы вроде про РАУНД спрашивали, в ни в приведенном запросе, не в выделенном красном его нету ну и ROUND(numeric_expression ;length) в T-Sql не работает |
||
25 окт 13, 15:48 [15032849] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
ТС сам с собой и со своими тараканами общается, мы ему похоже не нужны )) |
25 окт 13, 15:49 [15032858] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |