私は、以下のケースステートメントでnullを取得し続けている問題(または、isnull関数を使用すると0)が発生しています。私は、あるテーブルのord_due_dateが別のテーブルの2つの日付の間にあるときに、値を返すと言っています。なぜそれがヌル値を返すのかがわかりません。誰か私が間違っていることを教えてもらえますか?SQL Server - 別のテーブルの2つの日付間の日付
+cast(isnull(CASE
WHEN year(ord_due_date)=cal_yr and ord_due_date<=prd01_end_date
THEN '01 '+year(ord_due_date)
WHEN year(ord_due_date)=cal_yr and ord_due_date>prd01_end_date AND ord_due_date<=prd02_end_date
THEN '02 '+year(ord_due_date)
WHEN year(ord_due_date)=cal_yr and ord_due_date>prd02_end_date AND ord_due_date<=prd03_end_date
THEN '03 '+year(ord_due_date)
WHEN year(ord_due_date)=cal_yr and ord_due_date>prd03_end_date AND ord_due_date<=prd04_end_date
THEN '04 '+year(ord_due_date)
WHEN year(ord_due_date)=cal_yr and ord_due_date>prd04_end_date AND ord_due_date<=prd05_end_date
THEN '05 '+year(ord_due_date)
WHEN year(ord_due_date)=cal_yr and ord_due_date>prd05_end_date AND ord_due_date<=prd06_end_date
THEN '06 '+year(ord_due_date)
WHEN year(ord_due_date)=cal_yr and ord_due_date>prd06_end_date AND ord_due_date<=prd07_end_date
THEN '07 '+year(ord_due_date)
WHEN year(ord_due_date)=cal_yr and ord_due_date>prd07_end_date AND ord_due_date<=prd08_end_date
THEN '08 '+year(ord_due_date)
WHEN year(ord_due_date)=cal_yr and ord_due_date>prd08_end_date AND ord_due_date<=prd09_end_date
THEN '09 '+year(ord_due_date)
WHEN year(ord_due_date)=cal_yr and ord_due_date>prd09_end_date AND ord_due_date<=prd10_end_date
THEN '10 '+year(ord_due_date)
WHEN year(ord_due_date)=cal_yr and ord_due_date>prd10_end_date AND ord_due_date<=prd11_end_date
THEN '11 '+year(ord_due_date)
WHEN year(ord_due_date)=cal_yr and ord_due_date>prd11_end_date AND ord_due_date<=prd12_end_date
THEN '12 '+year(ord_due_date)
WHEN year(ord_due_date)=cal_yr and ord_due_date>prd12_end_date AND ord_due_date<=prd13_end_date
THEN '13 '+year(ord_due_date)
END,0) as varchar(40))+' '+
EDIT:
Ord_Due_Date(日)、それらの列からのデータを追加するには
Cal_Yr(数値)とPrd_End_Date(日)
あなたのロジックは何試合、おそらく間違っていないし、そこですNULLが返されます。 Btw、 'ISNULL'の代わりに' ELSE'を追加するだけです。いくつかのデータとそれらの列のデータ型を表示できますか? – dnoeth
elseは良い提案です、ありがとう。データからわかるように、prd_end_datesの間にある日付があります。ただし、nullは返されますが、 – baskinsr
サンプルデータは、「ord_due_date> prd10_end_date AND ord_due_date <= prd11_end_date」と一致する必要があります。 Btw、あなたのケースは複雑です、 'year(ord_due_date)= cal_yr'と' ord_due_date> prd .._end_date'は結果を変更せずに削除できます。 – dnoeth