Sql server SELECT UNION ALL ORDER BY查询中的GROUP BY子句错误
我正在尝试在SQL SERVER中对一个表进行联合排序 我在这里的几个地方读过,例如:我需要写: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
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