zoukankan      html  css  js  c++  java
  • SQL 流水账余额查询

    创建表

    CREATE TABLE [dbo].[test](
        [id] [int] IDENTITY(1,1) NOT NULL,
        [RQ] [date] NULL,
        [SR] [int] NULL,
        [ZC] [int] NULL
    ) ON [PRIMARY]

    插入数据

    INSERT INTO [dbo].[test]([RQ],[SR],[ZC])
    VALUES('2017-10-01 00:00:00',30,NULL);
    INSERT INTO [dbo].[test]([RQ],[SR],[ZC])
    VALUES('2017-10-02 00:00:00',NULL,20);
    INSERT INTO [dbo].[test]([RQ],[SR],[ZC])
    VALUES('2017-10-03 00:00:00',20,NULL);
    INSERT INTO [dbo].[test]([RQ],[SR],[ZC])
    VALUES('2017-10-04 00:00:00',NULL,10);
    INSERT INTO [dbo].[test]([RQ],[SR],[ZC])
    VALUES('2017-10-06 00:00:00',40,NULL);

    日期字段不重复

    DECLARE @starDate DATE
    DECLARE @endDate DATE
    SET @starDate = '2017-10-02'
    SET @endDate = '2017-10-07'
    
    SELECT '期初' AS 日期, ISNULL(SUM(SR), '-') AS 收入, ISNULL(SUM(ZC), '-') AS 支出, ISNULL(SUM(SR) -SUM(ZC), '-') AS 余额
    FROM   test
    WHERE  RQ < @starDate
    UNION ALL
    SELECT CAST(t.RQ AS NVARCHAR), ISNULL(t.SR, 0), ISNULL(t.ZC, 0), ISNULL(
               (
                   SELECT SUM(t2.SR) -SUM(t2.ZC)
                   FROM   test AS t2
                   WHERE  t2.RQ <= t.RQ
               ),0)
    FROM   test AS t
    WHERE  t.RQ >= @starDate AND t.RQ <= @endDate
    UNION ALL
    SELECT '合计', SUM(SR)SR, SUM(ZC)ZC, SUM(SR) -SUM(ZC)
    FROM   test

    日期不唯一, 用自增字段来区分:

    DECLARE @starDate DATE
    DECLARE @endDate DATE
    SET @starDate = '2017-10-02'
    SET @endDate = '2017-10-07'
    
    SELECT CAST('期初' AS VARCHAR) AS 序号,'' AS 日期, ISNULL(SUM(SR), '-') AS 收入, ISNULL(SUM(ZC), '-') AS 支出, ISNULL(SUM(SR) -SUM(ZC), '-') AS 余额
    FROM   test
    WHERE  RQ < @starDate
    UNION ALL
    SELECT CAST(t.ID AS VARCHAR),CAST(t.RQ AS NVARCHAR), ISNULL(t.SR, 0), ISNULL(t.ZC, 0), ISNULL(
               (
                   SELECT SUM(t2.SR) -SUM(t2.ZC)
                   FROM   test AS t2
                   WHERE  t2.id <= t.id
               ),0)
    FROM   test AS t
    WHERE  t.RQ >= @starDate AND t.RQ <= @endDate
    UNION ALL
    SELECT '合计','', SUM(SR)SR, SUM(ZC)ZC, SUM(SR) -SUM(ZC)

  • 相关阅读:
    TV
    [转载]如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧
    search result
    floating-camera
    HDU 1032.The 3n + 1 problem【注意细节】【预计数据不强】【8月21】
    C语言socket send()数据缓存问题
    Marlin固件之—:基础入门与測试
    java语句顺序有时非常重要
    Android Studio 使用正式签名进行调试
    插入排序、交换排序、选择排序、归并排序、基数排序
  • 原文地址:https://www.cnblogs.com/liessay/p/7748604.html
Copyright © 2011-2022 走看看