SQLクエリ内の別のcase文で別のcase文の名前を参照することはできますか?CASE文の名前を他のCASE文の別の参照として使用する
例:3つのケースステートメントがあります。最初の2つのcaseステートメントは、コード化フィールドに基づいて値を戻します。私の3番目のケースのステートメント数量の合計を返すために、最後のケースの名前を参照したいと思います。
しかし、私が作成した前のケース名を参照するためにcaseステートメントを取得する方法を理解できません。私はこれを正しく説明したいと思う。
ご協力いただければ幸いです。詳細は添付画像をご覧ください。
SELECT CI_ITEM.ITEMCODE
, CI_ITEM.ITEMCODEDESC
, CASE WHEN DATEDIFF("M",CI_ITEM.DATECREATED,GETDATE()) <60 THEN DATEDIFF("M",CI_ITEM.DATECREATED,GETDATE())
ELSE 60 END AS NO_OF_MONTHS
, CASE WHEN DATEDIFF("M",IM_ITEMTRANSACTIONHISTORY.TRANSACTIONDATE,GETDATE()) <=60
AND IM_ITEMTRANSACTIONHISTORY.TRANSACTIONCODE IN ('BI','II','SO','WI')
THEN IM_ITEMTRANSACTIONHISTORY.TRANSACTIONQTY *-1 ELSE '0' END AS QTY_CONSUMED_60_MONTHS
, CASE WHEN NO_OF_MONTHS = 0 THEN 0 ELSE SUM([QTY_CONSUMED_60_MONTHS])/ [NO_OF_MONTHS] END AS MONTHLY_AVE_ON_60MONTHS_DATA
FROM CI_ITEM
INNER JOIN IM_ITEMTRANSACTIONHISTORY ON CI_ITEM.ITEMCODE = IM_ITEMTRANSACTIONHISTORY.ITEMCODE
定義されている「SELECT」の列エイリアスを参照することはできません。サブクエリを使用する必要があります。または、CTE。使用しているデータベースで質問にタグを付けます。 –
タイトルにALL CAPSを使用しないでください。叫ぶのと同等とみなされます – jmoerdyk
「同じ」選択で試していることができない理由は、SELECT値が同時に生成されるためです。したがって、最後のケースが生成されている時点では、以前のケースについての知識はありません。これは本当かもしれません。これはいくつかの例外があるかもしれませんが、選択の順序は問題ありませんが、MS-Accessの場合はそうではないと私は信じています。 – xQbert