在SQL Server中以不同方式排序分组值

时间:2012-07-18 17:33:30

标签: sql sql-server sql-server-2008 tsql sql-server-2005

select 
  source_of_data,
  convert(varchar(10),a.DATECREATED,101),
  COUNT(*)
from some_table a
group by
  source_of_data, 
  convert(varchar(10),a.DATECREATED,101)
order by 
  source_of_data,
  convert(varchar(10),a.DATECREATED,101)

输出数据如下所示:

mainframe 4/5/11  22
mainframe 4/6/11  45
mainframe n/n/nn  nn
sqlserver 4/5/11  44
sqlserver 4/6/11  67
sqlserver n/n/nn  nn

但我希望输出看起来像这样:

mainframe 4/5/11  22
sqlserver 4/5/11  44
mainframe 4/6/11  45
sqlserver 4/6/11  67
mainframe n/n/nn  nn
sqlserver n/n/nn  nn

通过这种方式,我可以轻松地直观地验证是否缺少任何特定日期的分组条目 - 比如有一天我们获取大型机数据但缺少sqlserver数据。有人可以帮助修改查询,这样我就不必编写存储过程来实现我的目标吗?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,只需将您的订单切换到

convert(Date, a.DATECREATED,101), source_of_data

那么你的结果应该是你描述的方式

编辑:将其转换为varchar,它将无法按预期工作。将其转换为DATE类型。

答案 1 :(得分:0)

试试这个

  select 
      source_of_data,
      convert(varchar(10),a.DATECREATED,101),
      COUNT(*)
    from some_table a
    group by
      source_of_data, 
      convert(varchar(10),a.DATECREATED,101)
    order by 
     COUNT(*)