0

我在 SQL Server 中对多个列进行分组时遇到了麻烦。我知道 Group by 序数不起作用,而且我不能在 Group by 中使用别名。列出列很痛苦,特别是如果我在 SELECT 语句中格式化和转换了列。

例如

SELECT 
CONCAT('ABC',column1) AS col1,
cast('XYZ AS VARCHAR) AS col2, 
column3 AS col3, 
cast(ISNULL(column4,0) AS MONEY) / 100 AS col4, 
....
....
count(DISTINCT table2.ID) AS col15
GROUP BY <>

以上是我使用的示例查询,当我从不同的表中选择不同的列加入它们时,它很复杂。解决方案是什么?

4

1 回答 1

0

如果你真的想达到这个结果,唯一的机制是使用子查询或 CTE:

子查询:

SELECT *
FROM   (
        SELECT
            CONCAT('ABC',column1) AS col1,
            cast('XYZ AS VARCHAR) AS col2, 
            column3 AS col3, 
            cast(ISNULL(column4,0) AS MONEY) / 100 AS col4, 
            ....
            ....
            count(DISTINCT table2.ID) AS col15
        )
GROUP BY <>

公用表表达式 (CTE):

;WITH data AS (
    SELECT
            CONCAT('ABC',column1) AS col1,
            cast('XYZ AS VARCHAR) AS col2, 
            column3 AS col3, 
            cast(ISNULL(column4,0) AS MONEY) / 100 AS col4, 
            ....
            ....
            count(DISTINCT table2.ID) AS col15
    )
SELECT *
FROM Data
GROUP BY <>
于 2017-10-31T23:45:34.663 回答