2014-11-04 49 views
0

我有一个交易表如下:Tr_No是主键在MSSQL SQL的Transact陈述或MYSQL

Tr_No Tr_Date  Tr_Remarks     Tr_Amt 
1  2014-05-05 Cash Deposited     1000 
2  2014-05-06 Credit Card Withdrawal   -250 
3  2014-05-07 ATM Withdrawal     -450 
4  2014-05-08 Cash Deposited     1000 

我需要一个表如下:

Date    Remarks    Cash Deposited Cash Withdrawal Balance 
2014-05-05  Cash Deposited   1000        1000 
2014-05-06  Credit Card Withdrawal      -250    750 
2014-05-07  ATM Withdrawal        -450    300 
2014-05-08  Cash Deposited   1000        1300 

我需要写一个SQL查询在MySQL或MSSQL中获取上述表格。请帮助我,因为我是SQL新手。使用Select语句在存储过程中优先

+0

@TomTom感谢您的有效信息,但如果你能帮助我如何写这个查询这将是对我更有帮助..... – user3085636 2014-11-04 11:45:02

+1

不,不会。这个问题将被关闭,因为我们不是一个代码写作服务。希望其他人做你的工作(包括学习和尝试) - 雇用他们。首先阅读网站规则,并在这里不欢迎哪些问题。 – TomTom 2014-11-04 11:57:32

回答

0

试试这个。这应该给你一个想法。

CREATE TABLE #tt 
    (
    Tr_No  INT, 
    Tr_Date DATE, 
    Tr_Remarks VARCHAR(100), 
    Tr_Amt  INT 
) 

INSERT INTO #tt 
VALUES  (1,'2014-05-05','Cash Deposited',1000), 
      (2,'2014-05-06','Credit Card Withdrawal',-250), 
      (3,'2014-05-07','ATM Withdrawal',-450), 
      (4,'2014-05-08','Cash Deposited',1000); 

WITH cte 
    AS (SELECT *, 
       CASE WHEN Tr_Amt > 0 THEN CONVERT(VARCHAR(50), Tr_Amt) ELSE '' END [Cash Deposited], 
       CASE WHEN Tr_Amt < 0 THEN CONVERT(VARCHAR(50), Tr_Amt) ELSE '' END [Cash Withdrawal], 
       Tr_Amt Balance 
     FROM #tt) 
SELECT Tr_Date, 
     Tr_Remarks, 
     [Cash Deposited], 
     [Cash Withdrawal], 
     (SELECT Sum(Balance) Balance 
     FROM cte a 
     WHERE a.Tr_Date <= b.Tr_Date) AS Balance 
FROM cte b 

输出

Tr_Date  Tr_Remarks    Cash Deposited Cash Withdrawal Balance 
---------- --------------   -------------- --------------- ------- 
2014-05-05 Cash Deposited   1000       1000 
2014-05-06 Credit Card Withdrawal     -250   750 
2014-05-07 ATM Withdrawal       -450   300 
2014-05-08 Cash Deposited   1000       1300 
+1

刚刚为他们完成了某人的功课。没有学到什么 – Fred 2014-11-04 13:05:35