Please check the sample and comment.
Declare @cardNumber varchar(50) --here datatype missing
select name, address,
(--select @cardNumber = --you can not do 2 thing in one select query, either set variable or get result, not both in a single query
select top 1 value from card cd
inner join cardNotuse cdnu on cd.id = cdnu.cardId
where cdnu.type = 'CreditCard'
),
case when (@cardNumber = 1) then 'TopPriority'
when (@cardNumber = 2) then 'SecondPriority'
Else 'Normal' end as PriorityLeval
from customer
--1. Either set statment to get value
set @cardNumber =
(select top 1 value from card cd
inner join cardNotuse cdnu on cd.id = cdnu.cardId
where cdnu.type = 'CreditCard'
)
--2. or in select query you can set,but result always be a single value as you taken top 1 will not work for you.
select @cardNumber = --this gives error as top clause will not work
top 1 value from card cd
inner join cardNotuse cdnu on cd.id = cdnu.cardId
where cdnu.type = 'CreditCard'
--This will work. If a single value there, it return a value. If more than one value, set last record.
select @cardNumber = value _Id from card cd
inner join cardNotuse cdnu on cd.id = cdnu.cardId
where cdnu.type = 'CreditCard'