繁体   English   中英

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

[英]How to order (sort) formatted numbers in an Access Union Query (SQL)

我在Access中创建了以下联合查询,但是在按我希望的方式格式化“每小时”值时遇到麻烦。 因为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;

作为一个较小的问题,格式化后的数字左对齐,就好像它们是文本,数字应右对齐一样。

您可以在子查询中包括“ 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的列。

将最后一行更改为

ORDER BY Expr1 DESC

作品。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM