我有一个名为[AccountsLedger]的视图,其日期字段名称为[Date]。 当我使用此查询时,order by不起作用:
SELECT CONVERT(varchar,[Date],103) as [Date]
,[VoucherType]
,[BillNo]
,[Debit]
,[Credit]
FROM [AccountsLedger]
order by [Date]
结果:
Date VoucherType BillNo Debit Credit
01/06/2011 SALE 18 8400.00 0.00
03/06/2011 BEEJAK 15 0.00 24944.40
12/12/2009 PAYMENT 1 1000.00 0.00
12/12/2011 JOURNAL 1 800.00 0.00
12/12/2012 RECEIPT 4 0.00 1200.00
12/12/2016 RECEIPT 5 0.00 600.00
请帮忙。
答案 0 :(得分:6)
试试这个
SELECT CONVERT(varchar,[Date],103) as [Date]
,[VoucherType]
,[BillNo]
,[Debit]
,[Credit]
FROM [AccountsLedger]
ORDER by [AccountsLedger].[Date]
问题是您的查询是按新形成的字符串值排序,您的命名方式与在表中命名datetime字段的方式相同。因此,为了解决问题,您需要为结果字符串值和基础字段指定不同的名称或指定表前缀。
答案 1 :(得分:2)
您的字段看起来是varchar类型,而不是日期。请尝试这样:
SELECT CONVERT(varchar,[Date],103) as [Date]
,[VoucherType]
,[BillNo]
,[Debit]
,[Credit]
FROM [AccountsLedger]
order by CONVERT(varchar,[Date],102)