OriginalGriff
Операция Select возвращает все строки, которые удовлетворяют критериям, как правило, обеспечивается, где выражение. Но вы пытаетесь присвоить результаты запроса SELECT одной переменной NVARCHAR - поэтому, если запрос возвращает две строки, какое значение должен использовать SQL? Система не знает, поэтому вместо этого она выдает исключение.
Вероятно, то, что вы пытаетесь сделать, это добавить условие WHERE:
declare @code nvarchar(13)
set @code= (select gendertype from cif WHERE somecolumn = somevalue)
Или даже
declare @code nvarchar(13)
set @code= (select TOP 1 gendertype from cif WHERE somecolumn = somevalue)
Но на практике это плохая идея. Вместо этого создайте вторую таблицу: гендерные типы
ID Desc
(INT, IDENTITY) NVARCHAR(6)
1 Male
2 Female
3 OTHER
И изменить свой
gendertype
столбец к INT, чтобы соответствовать, ссылаясь на гендерные типы.Идентификатор качестве иностранного ключа.
Затем ваш запрос становится простым соединением:
SELECT c.cid,c.name1,g.Desc AS gender FROM cif c
JOIN GenderTypes g ON g.ID = c.gendertype
И система сделает всю работу за вас.