この挑戦を手伝ってください。
このコードは空白の結果を返しますが、その理由がわかりません。
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) を除いた内部クエリの結果です。ご覧のとおり、空白/空/null Vendor_Name が最も頻繁に発生します。
len() 関数を使用して Vendor_name の長さを確認すると、12 が返されます。しかし、上記の内部クエリの結果を Excel シートにコピーし、Excel で len() 関数を使用すると、Excel は 0 を示します。宣言された長さVendor_name
SQL Server テーブルのforは です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
しかし、この結果は私が望んでいたものではありません。
私は何か見落としてますか?
ありがとうございました!
ps。ここに投稿するためにデータを複製しようとしましたが、成功しませんでした。