"Ошибка подзапроса возвратила более 1 значения"

SELECT [schoolname] AS combinationschools, 
 CASE 
 WHEN [schoolname] LIKE '%/%' THEN (SELECT value 
 FROM 
 [dbo].[Split]('/', '#6/#9E/#9M')) 
 END AS schoolname 
FROM [dbo].[schools];

Я получаю q sql error, как wise-

Подзапрос возвратил более 1 значения. Это недопустимо, когда подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется как выражение.

3 ответа

Когда вы используете такой подзапрос, вы можете иметь только одну запись в результирующем наборе для каждой записи. Очевидно, что ваш стол Split имеет более одной записи.

Используйте соединение вместо подзапроса. Или сделайте этот коррелированный подзапрос, присоединив его к таблице школ в подзапросе или потянув только запись Max или min или сделайте какое-то предложение where в подзапросе thw, чтобы получить только одну запись. Не видя структуры таблиц и данных, трудно точно определить, что делать.


Это потому, что Select value from [dbo].Split возвращает более одного значения.


Я думаю, что ваша функция split вернет таблицу, которую вы не можете поймать в одной строке в данном примере. Функция split вернется после трех строк, которые невозможно поймать в одной строке

#6
#9E
#9M

я думаю, вам не нужно пропускать какую-либо переменную в функции split

Пожалуйста, перейдите somthing в Select value from [dbo].Split

licensed under cc by-sa 3.0 with attribution.