私は、AdventureWorks2012
データベースを使用して T-SQL の使い方を学んでいる初心者です。私は SQL Server 2014 を使用していますが、2008 でも機能するソリューションがあればすばらしいでしょう。私は以下の演習を与えられました:
Sales.SpecialOffer テーブルを使用してクエリを作成します。MinQty 列と MaxQty 列の差を SpecialOfferID 列と Description 列と共に表示します。
MaxQty
つまり、null 値を許可するので、null をそこに残す必要のない出力の実際のソリューションを考え出そうとしています。ただし、coalesce を使用して「No Max」を返そうとすると (はい、そこに NULL をそのままにしておくことができますが、これを理解できるかどうかを確認しようとしています)、varchar
値が「 No Max' を data type に変換できませんでしint
た。これはMaxQty - MinQty
、int
が優先されるためだと思いますか?
select
specialofferid
, description
, coalesce((maxqty - minqty),'No Max') 'Qty_Difference'
from
sales.specialoffer;
エラー:
メッセージ 245、レベル 16、状態 1、行 135
varchar 値 'No max' をデータ型 int に変換するときに変換に失敗しました。
意味のない整数 (0 または負) を返すことだけを考えましたが、それは完璧ではないようです。0 を返すと、結果が実際にゼロである状況がわかりにくくなります。
考え?