【问题标题】:How to seperate SQL query result based on parts of the column input如何根据部分列输入分隔 SQL 查询结果
【发布时间】:2014-11-11 05:19:11
【问题描述】:

我想知道这是否可能以及如何做到这一点。我们使用 SQL Server 2005

有人问我一个问题来总结每天使用的存储量。 文件的大小以像素大小的形式存储在我们的数据库中。在同一个表中,日期时间列也可用。它包含这样的记录:2009-01-31 10:59:13.000

因此,为了获得每天存储的总大小,我需要计算像素大小的记录,然后按日期将它们分开,这样最终的结果就是我每天获得体积像素大小。

到目前为止,我得到了这个:

select round (sum(pixeldatafilesize)/1048576,2) as studysizemb
from filename
where DateTime between '2014-05-01' and '2014-06-01'

我尝试添加group by datetime asc,但它未能给我正确的结果。

有谁知道在这种情况下如何正确分离?

【问题讨论】:

  • 试试这个查询 - SELECT CAST(DateColumn AS DATE), ROUND(SUM(pixeldatafilesize) / 1048576, 2) AS studysizemb FROM [filename] WHERE CAST(DateColumn AS DATE) BETWEEN '2014-05-01' AND '2014-06-01' GROUP BY CAST(DateColumn AS DATE)
  • 您好,感谢您这么快回复。此查询为我提供了每个唯一毫秒的记录。如果它可以是每天 mb 的大小,那就太好了。
  • 您能发布或向我们展示预期的输出吗??
  • 作为 05-01 和 06-01 (f.ex) 之间的查询过滤器,期望结果返回 30(每月的每一天),其中包含数字(表示使用的 MB 量)所以上面我只提供了 1 条记录,其中包含 5 月孔月使用的 mb,而我确实希望每天单独查看它。谢谢!

标签: sql sql-server database sql-server-2005


【解决方案1】:

当我过去处理这个问题时,我使用过类似的东西

SELECT ROUND(SUM(pixeldatafilesize)/1048576,2) AS studysizemb,CONVERT(varchar(50),DateTime ,101)  AS DateTime FROM filename 
WHERE DateTime BETWEEN '2014-05-01' AND '2014-06-01' 
GROUP BY CONVERT(varchar(50),DateTime ,101) 

这应该为您提供格式为 09/17/2014 的日期,并将在一天中的任何时间返回相同的值。

【讨论】:

  • 谢谢,这有点帮助。能够使用 convert 和 charchar 以良好的格式获得它
猜你喜欢
  • 1970-01-01
  • 2019-08-26
  • 2012-09-23
  • 1970-01-01
  • 2016-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多