Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 September 10

M

Marat in SqlCom.ru - Стиль жизни SQL
DanKu13
парни, может кто подсказать по SQL?
в запросе из xml вытаскивается значение, которое потом надо проверить и выдать 1/0,
есть вот такое value, там приходит в виде текста число от 0 до 100, с запятой разделителем, например "82,9"
results.[row].value( '(value)', 'VARCHAR(10)' )

пробовал конвертнуть валуе в int, выдаёт ошибку
CASE WHEN ISNULL(results.[row].value( '(value)', 'int' ), 0 ) > 85 THEN 1
ELSE 0 END AS isPassed

ошибка: Conversion failed when converting the nvarchar value '82,9' to data type int.

потом пробовал конвертнуть и через CAST и через CONVERT, всё время выдаёт что негоже конвертировать, менял запятую на точку, ноль эффекта
Есть какие-то мысли как можно всё таки конвертнуть или как проверить тогда строку, на то что она меньше 85?
вам нужно в decimal  конвертить
источник

D

DanKu13 in SqlCom.ru - Стиль жизни SQL
когда делаю замену запятой на точку тоже самое(
CASE WHEN CAST(REPLACE(ISNULL(results.[row].value( '(value)', 'VARCHAR(10)' ), 0 ), ',', '.') AS DECIMAL) > 85 THEN 1

Error converting data type varchar to numeric.
источник

2_

2flower _ in SqlCom.ru - Стиль жизни SQL
а можете просто показать что выводит results.[row].value( '(value)', 'VARCHAR(10)' )
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
DanKu13
когда делаю замену запятой на точку тоже самое(
CASE WHEN CAST(REPLACE(ISNULL(results.[row].value( '(value)', 'VARCHAR(10)' ), 0 ), ',', '.') AS DECIMAL) > 85 THEN 1

Error converting data type varchar to numeric.
Объявите переменную типа float и сделайте select её, посмотрите какой у вас разделитель
источник

M

Marat in SqlCom.ru - Стиль жизни SQL
Alexey
SELECT ID, DateTime
FROM dbo.GD

WHERE GD.[ID]=666        and GD.[DateTime]='2019-12-31 12:00:00'
option(recompile)
а актуальный план можете приложить
источник

A

Alexey in SqlCom.ru - Стиль жизни SQL
Marat
а актуальный план можете приложить
в общем проблема в статистика - тк она не по всем ID сделана. и теперь вопрос - как сделать статистику по всем ID/ Fullscan уже пробовал
источник

M

Marat in SqlCom.ru - Стиль жизни SQL
Alexey
в общем проблема в статистика - тк она не по всем ID сделана. и теперь вопрос - как сделать статистику по всем ID/ Fullscan уже пробовал
у вас скорее всего неравномерное распределение по ID, можно по гистограмме проверить.
источник

I

ILYA in SqlCom.ru - Стиль жизни SQL
Alexey
в общем проблема в статистика - тк она не по всем ID сделана. и теперь вопрос - как сделать статистику по всем ID/ Fullscan уже пробовал
Можно сделать отдельную фильтрованную статистику по нужным ид... Но что-то если до этого дошло то имхо где-то раньше не туда свернули
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Alexey
господа вопрос про estimated and actual rows. статистику обновлял. запрос простейший - возвращает всего 6 строк, а ожидает 135.
Это небольшая ошибка. Всего сколько в таблице строк?
источник

D

DanKu13 in SqlCom.ru - Стиль жизни SQL
2flower _
а можете просто показать что выводит results.[row].value( '(value)', 'VARCHAR(10)' )
ISNULL( results.[row].value( '(value)', 'VARCHAR(10)' ), 0 ) AS isPassed
источник

D

DanKu13 in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
Объявите переменную типа float и сделайте select её, посмотрите какой у вас разделитель
разделитель запятая
 DECLARE @var FLOAT = 10.1;
 SELECT @var
источник

ВБ

Владимир Боярских... in SqlCom.ru - Стиль жизни SQL
пробуйте TRY_CAST и смотрите по NULL какие данные не кастуются к нумерик
источник

D

DanKu13 in SqlCom.ru - Стиль жизни SQL
Владимир Боярских
пробуйте TRY_CAST и смотрите по NULL какие данные не кастуются к нумерик
помогло, с заменой запятой на точку, нигде ни нулов ни ошибок, всё как надо отработало
источник

D

DanKu13 in SqlCom.ru - Стиль жизни SQL
источник

A

Alexey in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Это небольшая ошибка. Всего сколько в таблице строк?
12440149
источник

AY

Andrey Yakovlev in SqlCom.ru - Стиль жизни SQL
Парни, приветствую!
Напомните, плиз какой оператор объединяет результат типа count из двух таблиц в одном запросе?

Чтобы получилось вот так, например:
ФИО, Количество законченных курсов, Количество незаконченных курсов

в одну строку

P.S. оператор UNION не совсем подходит
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Alexey
12440149
Ну, 12 миллионов, на фоне этого  что одна запись, что 100 -- не так важно
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Andrey Yakovlev
Парни, приветствую!
Напомните, плиз какой оператор объединяет результат типа count из двух таблиц в одном запросе?

Чтобы получилось вот так, например:
ФИО, Количество законченных курсов, Количество незаконченных курсов

в одну строку

P.S. оператор UNION не совсем подходит
Два подзапроса
источник

AY

Andrey Yakovlev in SqlCom.ru - Стиль жизни SQL
Ilia Zviagin
Два подзапроса
нет, тогда получается 2 строки, а мне нужно в одну
источник

IZ

Ilia Zviagin in SqlCom.ru - Стиль жизни SQL
Andrey Yakovlev
нет, тогда получается 2 строки, а мне нужно в одну
два ПОДЗАПРОСА
источник