您的位置主页 > MYSQL

跟日期有关的两条经典SQL语句

  1.用一条语句得出某日期所在月份的最大天数?

  SELECT DAY(DATEADD(dd, -DAY('2004-02-13'), DATEADD(mm, 1, '2004-02-13'))) AS 'Day Number'

  2.少记录变成多条记录问题

  有表tbl

  日期 收入 支出

  2004-02-11 00:00:00 60 45

  2004-03-01 00:00:00 60 45

  2004-03-02 00:00:00 40 50

  2004-03-05 00:00:00 50 40

  /*

  测试数据:

  Create Table tbl([日期] smalldatetime,[收入] int ,[支出] int)

  Insert Into tbl

  SELECT '2004-02-11', 60, 45

  union SELECT '2004-03-01',60, 45

  union SELECT '2004-03-02',40, 50

  union SELECT '2004-03-05',50, 40

  */

  要得到的结果:

  日期 收入 支出 余额

  2004-02-01 00:00:00 NULL NULL NULL

  2004-02-02 00:00:00 NULL NULL NULL

  2004-02-03 00:00:00 NULL NULL NULL

  2004-02-04 00:00:00 NULL NULL NULL

  2004-02-05 00:00:00 NULL NULL NULL

  2004-02-06 00:00:00 NULL NULL NULL

  2004-02-07 00:00:00 NULL NULL NULL

  2004-02-08 00:00:00 NULL NULL NULL

  2004-02-09 00:00:00 NULL NULL NULL

  2004-02-10 00:00:00 NULL NULL NULL

  2004-02-11 00:00:00 60 45 15

  2004-02-12 00:00:00 NULL NULL 15

  2004-02-13 00:00:00 NULL NULL 15

  2004-02-14 00:00:00 NULL NULL 15

  2004-02-15 00:00:00 NULL NULL 15

  2004-02-16 00:00:00 NULL NULL 15

  2004-02-17 00:00:00 NULL NULL 15

  2004-02-18 00:00:00 NULL NULL 15

  2004-02-19 00:00:00 NULL NULL 15

  2004-02-20 00:00:00 NULL NULL 15

  2004-02-21 00:00:00 NULL NULL 15

  2004-02-22 00:00:00 NULL NULL 15

  2004-02-23 00:00:00 NULL NULL 15

  2004-02-24 00:00:00 NULL NULL 15

  2004-02-25 00:00:00 NULL NULL 15

  2004-02-26 00:00:00 NULL NULL 15

  2004-02-27 00:00:00 NULL NULL 15

  2004-02-28 00:00:00 NULL NULL 15

  2004-02-29 00:00:00 NULL NULL 15

  2004-03-01 00:00:00 60 45 30

  2004-03-02 00:00:00 40 50 20

  2004-03-03 00:00:00 NULL NULL 20

  2004-03-04 00:00:00 NULL NULL 20

  2004-03-05 00:00:00 50 40 30

  2004-03-06 00:00:00 NULL NULL 30

  2004-03-07 00:00:00 NULL NULL 30

  2004-03-08 00:00:00 NULL NULL 30

  2004-03-09 00:00:00 NULL NULL 30

  2004-03-10 00:00:00 NULL NULL 30

  2004-03-11 00:00:00 NULL NULL 30

  2004-03-12 00:00:00 NULL NULL 30

  2004-03-13 00:00:00 NULL NULL 30

  2004-03-14 00:00:00 NULL NULL 30

  2004-03-15 00:00:00 NULL NULL 30

  2004-03-16 00:00:00 NULL NULL 30

  2004-03-17 00:00:00 NULL NULL 30

  2004-03-18 00:00:00 NULL NULL 30

  2004-03-19 00:00:00 NULL NULL 30

  2004-03-20 00:00:00 NULL NULL 30

  2004-03-21 00:00:00 NULL NULL 30

  2004-03-22 00:00:00 NULL NULL 30

  2004-03-23 00:00:00 NULL NULL 30

  2004-03-24 00:00:00 NULL NULL 30

  2004-03-25 00:00:00 NULL NULL 30

  2004-03-26 00:00:00 NULL NULL 30

  2004-03-27 00:00:00 NULL NULL 30

  2004-03-28 00:00:00 NULL NULL 30

  2004-03-29 00:00:00 NULL NULL 30

  2004-03-30 00:00:00 NULL NULL 30

  2004-03-31 00:00:00 NULL NULL 30

  答案:

  SELECT Y.[日期], tbl.[收入], tbl.[支出], (

  SELECT SUM(ISNULL(tbl.[收入], 0)-ISNULL(tbl.[支出], 0)) FROM tbl WHERE [日期]