这件事我需要你的帮助。我在SQL Server2008Excel中运行存储过程,将数据导入R2工作表。
除了输出的顺序之外,我可以很好地导入我需要的信息。
这是我得到的:
1 - OUTCO
10 - OUT
11 - MATCH
12 - UNRSL
2 - INCO
3 - UNDEL
4 - MAIL
5 - NOTSU
6 - NOMSI
7 - RSRCH
9 - IN
9 - INCOM
我想用正确的数字顺序来显示它。
1,2,3,4,5,6,7,9,9,10,11,12.
代码如下:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [Temp].[dmv_import]
@date DATE = NULL,
@import_type VARCHAR(5) = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @date_work DATE
IF @date IS NULL
SET @date_work = GETDATE()
ELSE
SET @date_work = @date
SELECT
CASE
WHEN CONVERT(VARCHAR(8), import_code) + ' - ' + vi.import_reason IS NULL
THEN 'TOTAL'
ELSE CONVERT(VARCHAR(8), import_code) + ' - ' + vi.import_reason
END AS 'Category',
SUM(CASE WHEN CONVERT(DATE, vi.createdate, 101) = @date_work THEN 1 ELSE 0 END) AS 'received',
SUM(CASE WHEN CONVERT(DATE, vi.processed_date, 101) = @date_work THEN 1 ELSE 0 END) AS 'processed'
FROM
DIMSNet.dbo.voter_import vi
WHERE
vi.import_type IN ('DMV', 'DUP','INET')
AND import_code < 13
GROUP BY
CONVERT(VARCHAR(8), import_code) + ' - ' +vi.import_reason WITH ROLLUP
END
我尝试了几个不同的ORDER BY
子句,但一直收到转换错误。
1) ORDER BY CONVERT(INT, LEFT((vi.import_code + ' - ' + vi.import_reason), 2))
2) ORDER BY LEFT((vi.import_code + ' - ' + vi.import_reason),PATINDEX('%[-]%',(vi.import_code + ' - ' + vi.import_reason)-1), CAST(RIGHT((vi.import_code + ' - ' + vi.import_reason), LEN((vi.import_code + ' - ' + vi.import_reason)) - 2) AS INT)
3) ORDER BY (CONVERT(VARCHAR(8), import_code) + ' - ' + vi.import_reason) ASC
4) order by case WHEN ISNUMERIC(vi.import_code +‘-’+ vi.import_reason) =1然后转换(vi.import_code+‘-’+ vi.import_reason AS FLOAT) WHEN ISNUMERIC(LEFT((vi.import_code +‘-’+ vi.import_reason),1)) =0然后ASCII码(LEFT(LOWER(vi.import_code+‘-’+ vi.import_reason)),1))否则2147483647结束
所有这些都没有返回格式正确的输出。
任何帮助都将不胜感激。
发布于 2018-06-19 08:49:19
假设你的代码都是数字,试试这个:
order by cast(max(import_code) as int)
如果没有,您可以使用case
表达式:
order by (case when isnumeric(max(import_code)) = 1
then max(import_code)
end)
这里的关键是使用聚合函数来按import_code
排序。
https://stackoverflow.com/questions/50919078
复制相似问题