2016-05-17 15 views
0
i.Notes, SUM(l.Discount) AS Dcount, i.DiscDate, i.DueDate, i.UIMth, i.UISeq, poj.Job, poj.Description, i.UniqueAttchID, i.ReviewerGroup AS RevGrp, SUM(l.GrossAmt) 
        AS GrossAmt, v.PayTerms, dbo.HQPT.DiscRate, i.InvTotal, DATEDIFF(day,getdate(),i.DiscDate) AS DiscDays, 
--Trying to use the DiscDays and Dcount here  
        if DiscDays, between '20' and '11' THEN sum(Dcount) as YelDisc 

私はここで私を助けてくれることを願っています。私はT-SQLの新機能です。同じ選択ステートメントでエイリアスを選択

答えて

0

あなたは同じクエリ内の別名を参照することはできませんが、何を行う可能性は以下の通りです:

 select 
     i.Notes, 
     SUM(l.Discount) AS Dcount, 
     i.DiscDate, 
     i.DueDate, 
     i.UIMth, 
     i.UISeq, 
     poj.Job, 
     poj.Description, 
     i.UniqueAttchID, 
     i.ReviewerGroup AS RevGrp, 
     SUM(l.GrossAmt) AS GrossAmt, 
     v.PayTerms, 
     dbo.HQPT.DiscRate, 
     i.InvTotal, 
     DATEDIFF(day,getdate(),i.DiscDate) AS DiscDays, 

    --Trying to use the DiscDays and Dcount here  
     case 
      when DATEDIFF(day,getdate(),i.DiscDate) between '11' and '20'     THEN sum(Dcount) 
      when DATEDIFF(day,getdate(),i.DiscDate) between '20' and '40'   THEN sum(Dcount)/2 
      else 0 -- this is the default case that doesn't match your cases, it could return NULL 
     end as YelDisc 
+0

私は明確化のためにいくつかの追加ケースを追加しました –

+1

チューダーあなたの助けに感謝し、あなたの提案はちょうど私が必要としたように働いた。余分なケースステートメントが役に立ちました。もう一つ質問があります。 「11」と「20」をYelDisc、「20」と「40」をGreDiscにしたいと思ったら、この声明はどのように見えますか?私はそれがすべて同じ事件声明の中でドームになることができるか、それともGreDiscのために個別に書かなければならないのか知っていますか?再度、感謝します!! – Steve

+0

'11 'と' 20 'の間のDATEDIFF(日、getdate()、i.DiscDate)のときには、' case THEN sum(Dcount)else Null endとして別の列に置かなければなりません。 YelDisc、 '20'と '40'の間のDATEDIFF(day、getdate(i)、D.Date)がWHERE句でヌル以外の列を検索する場合は、その理由は、検索されるデータに応じてスキーマ(列名とデータ型)を変更しないようにするためです。 –

0
  1. IFは、プログラムの流れではなく、あなたが再利用することはできません表現
  2. ですありがとう、私は私がここで必要なのサブクエリであると考えているが、私は正しく

    を、それをフォーマットするかどうかはわかりません数値結果は、引用符で一定の値を囲むていない比較した場合、他の列の別名は

01を試してみてください
CASE WHEN DATEDIFF(day,getdate(),i.DiscDate) between 20 and 11 
     THEN sum(Dcount) 
    ELSE 0 
END as YelDisc 

あなたでしエイリアスを再利用する副問合せを行いますが、そのような比較的単純な表現のために、あなたの結果の列数とは、それはおそらくそれだけの価値はありませんし。

+0

D・スタンレーは、あなたの助けをありがとうございました。あなたの提案は私の必要と同じように機能しました。乾杯!! – Steve

関連する問題