2017-08-17 11 views
1

トランザクションの日付を古いポリシーにソートしようとしています。 LastDateAging Days制限ポリシーより大きい場所にある場合、現在の日付を参照していない場合は、OverAgeと表示されます(Within)。ここ は、現在のテーブルです:ここでは問題発生時のSQLケース

+---------+------+----------+-------------+ 
|LastDate | Part | Location | Aging Days | 
+---------+------+----------+-------------+ 
12/1/2016 123 VVV   90 
8/10/2017 444 RRR   10 
8/01/2017 144 PR   21 
7/15/2017 12  RRR   10 

はクエリです:私はあなたの助けに感謝

+---------+------+----------+------------+---------+ 
|LastDate | Part | Location | Aging Days | Age | 
+---------+------+----------+------------+---------+ 
12/1/2016 123  VVV   90  Overage 
8/10/2017 444  RRR   10  Within 
8/01/2017 144  PR   21  Within 
7/15/2017 12  RRR   10  Overage 

select 
q.lastdate, 
r.part, r.location, 
a.agingpolicy as 'Aging Days' 
    from opsintranexcel r (nolock) 
left InventoryAging a (nolock) on r.location=a.location 
left join (select part,MAX(trandate) as lastdate from opsintran group by 
    part) q on r.part=q.part 

ここで私がしたい余分な列が添加されます。私はコードの下だと思う

+0

あなたはperpostで私を失ってしまいました – Strawberry

答えて

1

はあなた

SELECT 
    q.lastdate, 
    r.part, 
    r.location, 
    a.agingpolicy as 'Aging Days' 
    'Age' = 
    CASE 
     WHEN DATEDIFF(day, q.LastDate, GETDATE()) > a.agingpolicy THEN 'Overage' 
     ELSE THEN 'Within' 
    END 
FROM opsintranexcel r (nolock) 
LEFT JOIN InventoryAging a (nolock) on r.location=a.location 
LEFT JOIN (
    SELECT part,MAX(trandate) as lastdate 
    FROM opsintran 
    WHERE trantype='II' and PerPost>='201601' 
    GROUP BY part) q ON r.part=q.part 
+0

ありがとう、これは素晴らしい作品です。 – Blackfyre

+0

あなたのような場合は、真の答え:)))))としてボタンを押してください。 –

1

のための作業になりますが、老化日間にわたりまたは内場合

CASE WHEN DATEDIFF(NOW(), q.lastdate) > a.agingpolicy 
    THEN 'Overage' 
    ELSE 'Within' 
END AS age 
-1

を現在の日付の違いとlastdate値を確認することができますあなたは変更する必要がありますあなたのお問い合わせ先:

select 
q.lastdate, 
r.part, r.location, 
a.agingpolicy as 'Aging Days', 
if(DATEDIFF(NOW(), q.lastdate)) > a.agingpolicy, 'Overage','Within') as 'Age' 
from opsintranexcel r (nolock) 
left InventoryAging a (nolock) on r.location=a.location 
left join (select part,MAX(trandate) as lastdate from opsintran where 
    trantype='II' and PerPost>='201601' group by part) q on r.part=q.part 
関連する問題