相关疑难解决方法(0)

在sql结果中填充空日期的最简单方法是什么(在mysql或perl端)?

我正在从一个mysql表构建一个快速的csv,其查询如下:

select DATE(date),count(date) from table group by DATE(date) order by date asc;
Run Code Online (Sandbox Code Playgroud)

并通过以下方式将它们转储到perl中的文件:

while(my($date,$sum) = $sth->fetchrow) {
    print CSV "$date,$sum\n"
}
Run Code Online (Sandbox Code Playgroud)

但是数据中存在日期差距:

| 2008-08-05 |           4 | 
| 2008-08-07 |          23 | 
Run Code Online (Sandbox Code Playgroud)

我想填充数据以填写零计数条目的缺失日期,最终得到:

| 2008-08-05 |           4 | 
| 2008-08-06 |           0 | 
| 2008-08-07 |          23 | 
Run Code Online (Sandbox Code Playgroud)

我把一个非常笨拙(几乎肯定是错误的)的解决方法打包在一起,每个月都有一些日数和一些数学,但是在mysql或perl方面必须有更直接的东西.

面对为什么我这么愚蠢的任何天才想法/拍打?


我最终使用了一个存储过程,该过程为所讨论的日期范围生成临时表,原因如下:

  • 我知道我每次都会寻找的日期范围
  • 遗憾的是,有问题的服务器不是我可以在atm上安装perl模块的,并且它的状态已经破旧,它没有任何远程日期:: - y已安装

perl Date/DateTime迭代答案也非常好,我希望我能选择多个答案!

mysql perl calendar datediff

33
推荐指数
2
解决办法
2万
查看次数

如何对连续范围进行分组

我知道一些基本的sql,但这个超出了我.我看起来高低但没有骰子.我需要查看以下数据,我可以在应用程序层代码中执行此操作.但不幸的是,对于这个特定的代码,代码必须放在数据层中.

我正在使用T-SQL.

Date      Crew       DayType
01-02-11  John Doe  SEA  
02-02-11  John Doe  SEA  
03-02-11  John Doe  SEA  
04-02-11  John Doe  HOME  
05-02-11  John Doe  HOME  
06-02-11  John Doe  SEA 
Run Code Online (Sandbox Code Playgroud)

我需要这样的观点

DateFrom  DateTo    Name      DayType
01-02-11  03-02-11  John Doe  SEA
04-02-11  05-02-11  John Doe  HOME
06-02-11  06-02-11  John Doe  SEA
Run Code Online (Sandbox Code Playgroud)

不幸的是,应用层需要基表格格式为show.这可以在查询中做到吗?

谢谢

卢克

sql t-sql sql-server sql-server-2005 gaps-and-islands

24
推荐指数
2
解决办法
1万
查看次数

如何使用postgres中的窗口函数选择特定的更改

我有一个带有一些外键的表,我需要得到这些键何时更改的报告.

from | to | timestamp
   1 |  2 | 0000
   1 |  2 | 0001
   1 |  2 | 0002
   1 |  3 | 0003
   1 |  3 | 0004
   1 |  2 | 0005

SELECT from,to,FIRST(timestamp)FROM FROM GROUP BY from,to;

from | to | timestamp
   1 |  2 | 0000
   1 |  3 | 0003

我可以通过Group By来获得前两个转换,但它将第三个转换为第一个并且当它返回时我无法看到它.

我想进行以下查询:

from | to | timestamp
   1 |  2 | 0000
   1 |  3 | 0003
   1 |  2 | 0005 …

sql postgresql

3
推荐指数
1
解决办法
727
查看次数