首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用GROUP BY WITH ROLLUP和ORDER BY时出错

使用GROUP BY WITH ROLLUP和ORDER BY时出错
EN

Stack Overflow用户
提问于 2018-06-19 08:25:19
回答 1查看 46关注 0票数 0

这件事我需要你的帮助。我在SQL Server2008Excel中运行存储过程,将数据导入R2工作表。

除了输出的顺序之外,我可以很好地导入我需要的信息。

这是我得到的:

代码语言:javascript
复制
1 - OUTCO 
10 - OUT 
11 - MATCH 
12 - UNRSL 
2 - INCO 
3 - UNDEL 
4 - MAIL    
5 - NOTSU 
6 - NOMSI 
7 - RSRCH 
9 - IN 
9 - INCOM

我想用正确的数字顺序来显示它。

代码语言:javascript
复制
1,2,3,4,5,6,7,9,9,10,11,12.

代码如下:

代码语言:javascript
复制
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结束

所有这些都没有返回格式正确的输出。

任何帮助都将不胜感激。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50919078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档