2017-09-09 74 views
1

这是非常奇怪的,因为我有多年/月,但现在由于某些原因,几个月会前作出矩阵:1,10,11,12,3,4,5等等报告分拣月号不正确

问题:

The problem

分选是SQL Server细,并且该图是示出数据是正确的。它之前工作过,当我尝试与其他列,但现在它搞乱了。它使用DataSet作为来源,有以下:

戈迪纳(年)为的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) 

同样的,这显示是正确的,只是个没有被分类为一些奇怪的原因的数据。

+0

我想你可能会将数字排序为字符串而不是数字。 1,12,3会这样工作。 –

+0

这是字母顺序,就好像有字符串一样。尝试在一个数字月份之前添加“0” – Horaciux

+0

为什么此发布将c#作为标记。没有C#代码。你所显示的只是SQL查询结果。那么有什么不工作? – jdweng

回答

2

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

这是因为如果有串字母顺序排列。尝试在一位数月份之前添加'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) 
+0

那么我该如何去10,11和12月呢?我去掉你做了什么,随着年龄的增长,因为它所有这些改变为0 *,但现在仅几个月去1-9 – WhatAmIDoing

+0

看到我的编辑,使用权,而不是左 – Horaciux

+0

,但它是更相关的验证数据类型的列数据集 – Horaciux