Tuesday, August 20, 2013

AGING in SQL Server 2008

I calculate this Aging Report on 20-August-2013. So, you can change data as your requirement...

CREATE TABLE TAB1 (ITEM VARCHAR(20),DATE DATETIME,QTY INT)

INSERT INTO TAB1
SELECT 'BOOK1','2013-04-01',1 UNION ALL SELECT 'BOOK2','2013-04-02',1 UNION ALL
SELECT 'BOOK3','2013-04-03',1 UNION ALL SELECT 'BOOK4','2013-04-04',1 UNION ALL
SELECT 'BOOK1','2013-04-11',1 UNION ALL SELECT 'BOOK2','2013-04-12',1 UNION ALL
SELECT 'BOOK3','2013-04-13',1 UNION ALL SELECT 'BOOK4','2013-04-14',1 UNION ALL
SELECT 'BOOK1','2013-04-21',1 UNION ALL SELECT 'BOOK2','2013-04-22',1 UNION ALL
SELECT 'BOOK3','2013-04-23',1 UNION ALL SELECT 'BOOK4','2013-04-24',1 UNION ALL
SELECT 'BOOK1','2013-05-01',1 UNION ALL SELECT 'BOOK2','2013-05-02',1 UNION ALL
SELECT 'BOOK3','2013-05-03',1 UNION ALL SELECT 'BOOK4','2013-05-04',1 UNION ALL
SELECT 'BOOK1','2013-05-11',1 UNION ALL SELECT 'BOOK2','2013-05-12',1 UNION ALL
SELECT 'BOOK3','2013-05-13',1 UNION ALL SELECT 'BOOK4','2013-05-14',1 UNION ALL
SELECT 'BOOK1','2013-05-21',1 UNION ALL SELECT 'BOOK2','2013-05-22',1 UNION ALL
SELECT 'BOOK3','2013-05-23',1 UNION ALL SELECT 'BOOK4','2013-05-24',1 UNION ALL
SELECT 'BOOK1','2013-06-01',1 UNION ALL SELECT 'BOOK2','2013-06-02',1 UNION ALL
SELECT 'BOOK3','2013-06-03',1 UNION ALL SELECT 'BOOK4','2013-06-04',1 UNION ALL
SELECT 'BOOK1','2013-06-11',1 UNION ALL SELECT 'BOOK2','2013-06-12',1 UNION ALL
SELECT 'BOOK3','2013-06-13',1 UNION ALL SELECT 'BOOK4','2013-06-14',1 UNION ALL
SELECT 'BOOK1','2013-06-21',1 UNION ALL SELECT 'BOOK2','2013-06-22',1 UNION ALL
SELECT 'BOOK3','2013-06-23',1 UNION ALL SELECT 'BOOK4','2013-06-24',1 UNION ALL
SELECT 'BOOK1','2013-07-01',1 UNION ALL SELECT 'BOOK2','2013-07-02',1 UNION ALL
SELECT 'BOOK3','2013-07-03',1 UNION ALL SELECT 'BOOK4','2013-07-04',1 UNION ALL
SELECT 'BOOK1','2013-07-11',1 UNION ALL SELECT 'BOOK2','2013-07-12',1 UNION ALL
SELECT 'BOOK3','2013-07-13',1 UNION ALL SELECT 'BOOK4','2013-07-14',1 UNION ALL
SELECT 'BOOK1','2013-07-21',1 UNION ALL SELECT 'BOOK2','2013-07-22',1 UNION ALL
SELECT 'BOOK3','2013-07-23',1 UNION ALL SELECT 'BOOK4','2013-07-24',1

SELECT * FROM TAB1 ORDER BY ITEM, DATE ASC

SELECT ITEM,
SUM(CASE WHEN DATEDIFF(DD,DATE,GETDATE())<= 30 THEN QTY ELSE 0 END) 
AS [0-30],
SUM(CASE WHEN DATEDIFF(DD,DATE,GETDATE())<= 60 AND DATEDIFF(DD,DATE,GETDATE())>= 31 THEN QTY ELSE 0 END) 
AS [31-60],
SUM(CASE WHEN DATEDIFF(DD,DATE,GETDATE())<= 90 AND DATEDIFF(DD,DATE,GETDATE())>= 61 THEN QTY ELSE 0 END) 
AS [61-90],
SUM(CASE WHEN DATEDIFF(DD,DATE,GETDATE())>= 91 THEN QTY ELSE 0 END)
AS [90+],
SUM(QTY) AS TOTAL_QTY FROM TAB1 GROUP BY ITEM
ORDER BY TOTAL_QTY DESC

No comments:

Post a Comment