Пожалуйста, помогите мне с этим вызовом.Конкатенация строки SQL Server возвращает пустой
Этот код возвращает пустой результат, и я не могу понять причину.
select Vendor_Name + ' || ' + cast(cnt as varchar(12)) as Vendor_Count
from (select top (1) Vendor_Name, count(Vendor_Name) as cnt
from dbo.Vendors nolock
group by Vendor_Name
having count(Vendor_Name)>1
order by 2 desc) x
Но ... Внутренний запрос возвращает VENDOR_NAME пустой и CNT 63420
select top (1)
Vendor_Name, count(Vendor_Name) as cnt
from
dbo.Vendors nolock
group by
Vendor_Name
having
count(Vendor_Name) > 1
order by
2 desc
Вот это результат внутреннего запроса без верхней (1). Как вы можете видеть, пустое/пустое/пустое имя Vendor_Name встречается наиболее часто.
проверить длину VENDOR_NAME, используя функцию LEN(), и она возвращается 12. Но когда я скопировать результат от внутреннего запроса выше на листе Excel, и использовать функцию Len() в Excel - excel показывает 0. Объявленная длина для Vendor_name
в таблице SQL Server равна nvarchar(50)
.
Я пробовал isnull(Vendor_Name,'')
и COALESCE(Vendor_Name,'')
, но это не имело значения.
Я повторно разместил запрос и получил непустой результат, интересно, что это работает, но мой первоначальный запрос не делает.
select ' || ' + cast(cnt as varchar(12)) + ' ' + Vendor_Name
from (select top (1) Vendor_Name, count(Vendor_Name) as cnt
from dbo.Vendors nolock
group by Vendor_Name
having count(Vendor_Name)>1
order by 2 desc) x
Но этот результат не то, что я хотел.
Я что-то пропустил?
Спасибо!
пс. Я попытался воспроизвести данные, чтобы опубликовать их здесь, но безуспешно.
ли вы имеете в виду на самом деле пустой «», или пустой «» или нуль? – automatic
Кроме того: 'это жирный кодировщик, который использует 'order by 2'. Вы, должно быть, не сделали много обслуживания по коду других людей. – HABO
@automatic Не может быть 'null' из-за' having' –