【问题标题】:Report sorting month numbers incorrectly报告月份数字排序错误
【发布时间】:2018-02-17 23:13:41
【问题描述】:

这很奇怪,因为我之前用年/月制作了矩阵,但现在由于某种原因,月份正在过去:1、10、11、12、3、4、5 等等......

问题:

在 SQL Server 中排序很好,图表显示的数据是正确的。之前我在其他列上尝试过它时它工作过,但现在它搞砸了。它使用 DataSet 作为具有以下内容的源:

Godina(Year) 作为 Int32, Mjesec(月) 作为 Int32 和 BrojNarudzbi(订单数)为 Int32,按该顺序列在 DataTable 中。如果有帮助,此过程是我从中获取记录的地方:

begin
Select Count(NarudzbeID) as 'BrojNarudzbi', Month(N.DatumNarudzbe) as 'Mjesec', Year(N.DatumNarudzbe) as 'Godina'
from Narudzbe as N
Group by  Year(N.DatumNarudzbe), Month(N.DatumNarudzbe)
Order by Year(N.DatumNarudzbe), Month(N.DatumNarudzbe)

同样,显示的数据是正确的,只是由于某些奇怪的原因没有对月份进行排序。

【问题讨论】:

  • 我认为您可能会将数字排序为字符串而不是数字。 1、12、3 会这样工作。
  • 它是按字母顺序排列的,就像有字符串一样。尝试在一位数月份之前添加“0”
  • 为什么这个帖子有c#作为标签。没有 c# 代码。您所显示的只是 SQL 查询结果。那么什么不起作用?

标签: c# sql rdlc


【解决方案1】:

验证该列数据集中的数据类型。

它是按字母顺序排列的,就好像有字符串一样。尝试在一位数月份之前添加'0'

begin
Select Count(NarudzbeID) as 'BrojNarudzbi', 
  right('0'+cast(Month(N.DatumNarudzbe) as varchar(2)),2) as 'Mjesec', 
  Year(N.DatumNarudzbe) as 'Godina'
from Narudzbe as N
Group by  Year(N.DatumNarudzbe), Month(N.DatumNarudzbe)
Order by Year(N.DatumNarudzbe), Month(N.DatumNarudzbe)

【讨论】:

  • 那么第 10 个月、第 11 个月和第 12 个月我会怎样?我删除了你多年来所做的事情,因为它将它们全部更改为 0*,但现在几个月只去了 1-9
  • 但验证数据集中列的数据类型更相关
  • 它们都是 System.Int32,Month 和 Year 函数无论如何都应该返回整数,我不知道为什么它们会像字符串一样
  • 这是 Visual Studio 中报表制作器中的一个简单矩阵,扩展名为 .rdlc。我检查了报告数据源中的数据集,所有 int32s,我可能错过了一些东西,因为我之前确实让它正常工作,但这个解决方案现在就可以了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
相关资源
最近更新 更多