Я озадачен выходом следующего запроса:Нужна помощь в понимании запроса с участием «дела» и «выбрать в» пункты
select
'Eq Type' =
case
when
substring([Eq Type], 1, charindex('-', [Eq Type]) - 1) =
substring([Eq Type], charindex('-', [Eq Type]) + 1, len([Eq Type]))
then
substring([Eq Type], 1, charindex('-', [Eq Type]) - 1)
when
substring([Eq Type], 1, charindex('-', [Eq Type]) - 1) <>
substring([Eq Type], charindex('-', [Eq Type]) + 1, len([Eq Type]))
then
replace([Eq Type], '-', '')
else
null
end,
'Failure_Class' =
case
when charindex('-', [Eq Type]) <> 0 and
(substring([Eq Type], 1, charindex('-', [Eq Type]) - 1) =
substring([Eq Type], charindex('-', [Eq Type]) + 1, len([Eq Type])))
then
substring([Eq Type], 1, charindex('-', [Eq Type]) - 1)
when charindex('-', [Eq Type]) <> 0 and
(substring([Eq Type], 1, charindex('-', [Eq Type]) - 1) <>
substring([Eq Type], charindex('-', [Eq Type]) + 1, len([Eq Type])))
then
substring([Eq Type], 1, charindex('-', [Eq Type]) - 1) +
'\' +
replace([Eq Type], '-', '')
when CHARINDEX('-', [Eq Type]) = 0
then
Failure_Class
else
null
end
from dbo.Location
В таблице Расположения содержит 25385 записей, но только 8157 записей вернулся. Почему файлы отфильтрованы?
Когда я пытаюсь добавить в dbo.ModifiedLocation к вышеуказанному запросу, он выходит из строя со следующей ошибкой: «Неверный параметр длины передан функции LEFT или SUBSTRING». Сообщение довольно наглядное, но почему эта ошибка возникает, когда я добавляю в предложение? Почему запрос выполняется нормально без предложения?
Редактировать Я хотел бы объяснить, что я пытаюсь достичь. В исходном наборе данных есть две колонки, которые меня интересуют: Eq Type и Failure_Class. Данные выглядят следующим образом:
Eq Type, Failure_Class
ACCU-ACCU, ACCU
AUX-AUX, AUX
VA-BA, VA
VA-CH, VA
IP-LS, IP
null, null
VE, VE
JB, JB
VA, null
Поскольку данные поддерживаются вручную, это противоречиво. Мне нужны данные в следующем формате, чтобы иметь возможность импортировать их в свою систему управления активами.
Eq Type, Failure_Class
ACCU, ACCU
AUX, AUX
VABA, VA\VABA
VACH, VA\VACH
IPLS, IP\IPLS
null, null
VE, VE
JB, JB
VA, VA
Edit 2 Кажется, что я нашел эту проблему. Я выполнял этот запрос в бесплатной версии Toad 5.6 для SQL Server. Когда я переключился на SSMS и удалил «в dbo.ModifiedLocation», запрос поднял знакомый параметр «Неверная длина», переданный функции LEFT или SUBSTRING ». Это отвечает на мой второй вопрос. Я предполагаю, что если я разрешу эту ошибку, я получу желаемый результат. Спасибо за помощь.
Можете ли вы опубликовать данные или образец данных из dbo.Location и результат, который вы получите при запуске инструкции, чтобы кто-то помог –
@Trevor Done. Надеюсь, он разъясняет, чего я пытаюсь выполнить. –