如何在Access Union Query(SQL)中对格式化的数字进行排序(排序)

时间:2016-02-27 01:05:06

标签: sql ms-access

我在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;

作为一个较小的问题,格式化的数字是左对齐的,好像它们是文本不正确的数字应该是。

2 个答案:

答案 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

作品。