您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

ROLLUP功能;用列数据类型INT而不是VARCHAR的'Total'替换NULL

ROLLUP功能;用列数据类型INT而不是VARCHAR的'Total'替换NULL

DECLARE @MyTable TABLE (Column1 INT,Column2 INT)
INSERT INTO @MyTable VALUES
(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3)

SELECT CASE
         WHEN GROUPING(Column1) = 1 THEN 'Total'
         ELSE CAST(Column1 AS VARCHAR(10))     --<-- Cast as Varchar
       END  Column1
      , SUM(Column2) AS MySum
FROM @MyTable
GROUP BY Column1 
WITH ROLLUP;

╔═════════╦═══════╗
║ Column1 ║ MySum ║
╠═════════╬═══════╣
║ 1       ║     6 ║
║ 2       ║     6 ║
║ 3       ║     6 ║
║ Total   ║    18 ║
╚═════════╩═══════╝

笔记

您无法执行尝试执行的操作的原因是,CASE在每种情况下使用语句时,返回的数据类型应该相同。

在上面的查询中,我只是将colum1 CAST转换为varchar并成功了。

其他 2022/1/1 18:28:34 有436人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶