2016-04-19 148 views
2

老化结构我有一个表结构类似下面使用SQL查询

TNO DATE  NETAMT CHQ CASH PARTY 
--------------------------------------------- 
T1 01/04/2016 100  10 0  TEST1 
T2 15/04/2016 50  0 0  TEST2 
T3 18/04/2016 100  100 0  TEST3 

现在我想要做一个SQL查询,这将给我一个老化的报告,其中的交易是在砖卧突出。

我想看看下面的格式结果

PARTY 0-3 DAYS 4-6 DAYS 7-15 DAYS 
--------------------------------------------- 
TEST1  0   0   90 
TEST2  0   50   0 
TEST3  0   0   0 
+2

请注明RDBMS –

+0

@ThomasG ......它的SQL serevr 2012 – user3305327

+1

为什么第一列命名“PARTY”,但其中的值来自“TNO”列? –

回答

4

试试这个

SELECT PARTY, 
     SUM(CASE WHEN DATEDIFF(DAY,[DATE],GETDATE()) BETWEEN 0 AND 3 THEN (NETAMT - CHQ) ELSE 0 END) AS [0_3_DAYS], 
     SUM(CASE WHEN DATEDIFF(DAY,[DATE],GETDATE()) BETWEEN 4 AND 6 THEN (NETAMT - CHQ) ELSE 0 END) AS [4_6_DAYS], 
     SUM(CASE WHEN DATEDIFF(DAY,[DATE],GETDATE()) BETWEEN 7 AND 15 THEN (NETAMT - CHQ) ELSE 0 END) AS [7_15_DAYS], 
FROM TABLE1 
GROUP BY PARTY 
+0

您可能希望将列别名放在'[]'中,因为您无法使用数字开始列名称。 –

+0

@abdul rasheed,谢谢我们非常接近结果......唯一剩下的就是结果应该在每一方都排成一排......就像一个派对在2个不同年龄段进行2次不同交易一样,那么结果应该排成一行......现在用这个查询它来到两个不同的行 – user3305327

+0

@ user3305327在SUM函数中包含每个CASE表达式并在末尾添加GROUP BY PARTY。 –