我在Access中创建了以下Union Query,但是当按照我希望的方式格式化时,我无法订购“每小时”值。因为Emp_Police表的查询没有返回任何记录(由于Like“SP *”过滤器),我收到错误:
“ORDER BY表达式(每小时)包括查询未选择的字段。只有第一个查询中请求的字段才能包含在ORDER BY表达式中。”
ORDER BY表达式在字段未格式化时有效,但在未格式化时无效。我也尝试过将ORDER BY表达式作为
ORDER BY Format([Hourly],"Standard") DESC
但这似乎也不起作用。
SELECT Emp_Norm.UnionCode, Emp_Norm.EMPNAME, Format([Hourly],"Standard") AS Expr1, Format([Salary],"Standard") AS Expr2
FROM Emp_Norm
WHERE (((Emp_Norm.UnionCode) Like "SP*"))
UNION
SELECT Emp_Police.UnionCode, Emp_Police.EMPNAME, Format([Hourly],"Standard") AS Expr1, Format([Salary],"Standard") AS Expr2
FROM Emp_Police
WHERE (((Emp_Police.UnionCode) Like "SP*"))
ORDER BY Hourly DESC;
作为一个较小的问题,格式化的数字是左对齐的,好像它们是文本不正确的数字应该是。
答案 0 :(得分:3)
您可以在子查询中包含Hourly
:
SELECT Emp_Norm.UnionCode, Emp_Norm.EMPNAME, Format([Hourly],"Standard") AS Expr1, Format([Salary],"Standard") AS Expr2,
Hourly
FROM Emp_Norm
WHERE (((Emp_Norm.UnionCode) Like "SP*"))
UNION
SELECT Emp_Police.UnionCode, Emp_Police.EMPNAME, Format([Hourly],"Standard") AS Expr1, Format([Salary],"Standard") AS Expr2,
Hourly
FROM Emp_Police
WHERE (((Emp_Police.UnionCode) Like "SP*"))
ORDER BY Hourly DESC;
在MS Access中,需要选择ORDER BY
/ UNION
UNION ALL
中使用的列。
答案 1 :(得分:-1)
将最后一行更改为
ORDER BY Expr1 DESC
作品。