Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SELECT UNION ALL ORDER BY查询中的GROUP BY子句错误_Sql Server_Select_Group By_Union All - Fatal编程技术网

Sql server SELECT UNION ALL ORDER BY查询中的GROUP BY子句错误

Sql server SELECT UNION ALL ORDER BY查询中的GROUP BY子句错误,sql-server,select,group-by,union-all,Sql Server,Select,Group By,Union All,我正在尝试在SQL SERVER中对一个表进行联合排序 我在这里的几个地方读过,例如:我需要写: SELECT * FROM ( SELECT * FROM TABLE_A UNION ALL SELECT * FROM TABLE_B ) dum -- ORDER BY ..... 然而,我不断收到一个错误,说: Column 'dum.var' is invalid in th

我正在尝试在SQL SERVER中对一个表进行联合排序

我在这里的几个地方读过,例如:我需要写:

SELECT  * 
FROM 
        (
            SELECT * FROM TABLE_A 
            UNION ALL 
            SELECT * FROM TABLE_B
        ) dum
-- ORDER BY .....
然而,我不断收到一个错误,说:

Column 'dum.var' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
虽然我没有任何分组查询


有人能给我解释一下吗

多亏了上面评论中的Tyron78,我发现了这个错误

实际查询是:

SELECT * 
FROM
(
SELECT
        *
FROM
#TABLE1
UNION ALL
SELECT
        *
FROM
#TABLE2
) AS Z
ORDER BY sum([Units]) DESC, [Distance], [ID], [Product]
问题在于总和,因为我之前已经在表1和表2中进行了总和。 因此,好的查询如下所示:

SELECT * 
FROM
(
SELECT
        *
FROM
#TABLE1
UNION ALL
SELECT
        *
FROM
#TABLE2
) AS Z
ORDER BY [Units] DESC, [Distance], [ID], [Product]

谢谢大家

您需要提供要对结果集进行排序的列名

SELECT  * 
FROM 
    (
        SELECT * FROM TABLE_A 
        UNION ALL 
        SELECT * FROM TABLE_B
    ) dum
order by <column_name> [asc|desc]

表A和表B的表结构必须相同。

表A和表B的表结构是什么?也许联盟本身有问题。不,它们有相同的结构,即四个变量,dum.var就是其中之一。事实上,当我省略“orderby”并只运行括号中的内容时,它工作得很好……这就是您正在使用的查询吗?或者你的查询中是否有一些MAX、MIN、SUM、AVG或其他内容?如果没有dum.var的命令,它会工作吗?哦,等等。。。事实上,在“订单依据”中,我使用了一个总和。。。当删除此金额时,效果良好。谢谢蒂龙78!!!
DECLARE @t1 TABLE(
  ID INT
  ,Val INT
);

DECLARE @t2 TABLE(
  ID INT
  ,Val INT
);


INSERT INTO @t1 VALUES (1, 10), (2, 20), (3, 30);
INSERT INTO @t2 VALUES (1, 40), (2, 50), (3, 60);

 SELECT *
 FROM (
   SELECT x.ID, SUM(x.Val) SumVal
   FROM (
     SELECT ID,
            Val
       FROM @t1
     UNION ALL
     SELECT ID,
            Val
       FROM @t2
   ) x
   GROUP BY x.ID
) y
ORDER BY SumVal