带UNION和and的SQL ORDER BY
我在Excel中使用SQL,我的查询有一个UNION语句,我需要按日期排序 我有三张表:工作顺序表、工作历史表和笔记表。工作订单和工作历史记录具有相同的字段 我的代码是:带UNION和and的SQL ORDER BY,sql,sql-order-by,union,alias,Sql,Sql Order By,Union,Alias,我在Excel中使用SQL,我的查询有一个UNION语句,我需要按日期排序 我有三张表:工作顺序表、工作历史表和笔记表。工作订单和工作历史记录具有相同的字段 我的代码是: SELECT Work_order_0.WO_Key AS 'WO key', Work_order_0.Pos_key AS 'POS key', Work_order_0.Order_date AS 'Order date', Work_order_0.Order_tim
SELECT Work_order_0.WO_Key AS 'WO key',
Work_order_0.Pos_key AS 'POS key',
Work_order_0.Order_date AS 'Order date',
Work_order_0.Order_time/86400 AS 'Order time',
Note_0.Note AS 'Note'
FROM API3.PUB.Work_order Work_order_0
LEFT JOIN API3.PUB.Note Note_0 ON Work_order_0.WO_Key=Note_0.Relate_key
UNION
SELECT Work_history_0.WO_Key AS 'WO key',
Work_history_0.Pos_key AS 'POS key',
Work_history_0.Order_date AS 'Order date',
Work_history_0.Order_time/86400 AS 'Order time',
Note_0.Note AS 'Note'
FROM API3.PUB.Work_history Work_history_0
LEFT JOIN API3.PUB.Note Note_0 ON Work_history_0.WO_Key=Note_0.Relate_key
ORDER BY 'Order date' DESC;
正如您在最后一行中看到的,我尝试在ORDERBY子句中使用别名,但它给出了以下错误
根据第7645条的规定,现场规范不正确
有什么建议吗?提前感谢。您不能在同一查询中按顺序使用别名
SELECT * FROM
(SELECT Work_order_0.WO_Key AS 'WO key',
Work_order_0.Pos_key AS 'POS key',
Work_order_0.Order_date AS 'Order date',
Work_order_0.Order_time/86400 AS 'Order time',
Note_0.Note AS 'Note'
FROM API3.PUB.Work_order Work_order_0
LEFT JOIN API3.PUB.Note Note_0 ON Work_order_0.WO_Key=Note_0.Relate_key
UNION
SELECT Work_history_0.WO_Key AS 'WO key',
Work_history_0.Pos_key AS 'POS key',
Work_history_0.Order_date AS 'Order date',
Work_history_0.Order_time/86400 AS 'Order time',
Note_0.Note AS 'Note'
FROM API3.PUB.Work_history Work_history_0
LEFT JOIN API3.PUB.Note Note_0 ON Work_history_0.WO_Key=Note_0.Relate_key) AS T
ORDER BY 'Order date' DESC;
不要对列别名使用单引号。它们只会引起问题 第二,不要使用联合,当你打算联合所有人时。表别名使查询更易于编写和读取。因此,我建议如下:
SELECT w.*
FROM (SELECT wo.WO_Key, wo.Pos_key, wo.Order_date, wo.Order_time / 86400 AS Order_time,
n.Note
FROM API3.PUB.Work_order wo LEFT JOIN
API3.PUB.Note n
ON wo.WO_Key = n.Relate_key
UNION ALL -- unless you really want to incur the overhead of removing duplicates
SELECT wh.WO_Key, wh.Pos_key, wh.Order_date, wh.Order_time / 86400,
n.Note AS Note
FROM API3.PUB.Work_history wh LEFT JOIN
API3.PUB.Note n
ON wh.WO_Key = n.Relate_key
) w
ORDER BY Order_date DESC;
并非所有数据库都需要ORDER BY的子查询。但是,没有人会将分隔字符串识别为任何类型表达式中的列名或键。对别名使用双引号,这对我很有效
Select count(*) as "Count of orders" from pub.Customer c Left Join Pub.Order o ON c."Cust-Num"=o."Cust-Num"
UNION
Select count(*) as "Count of orders" from pub.Customer c Left Join Pub.Order o ON c."Cust-Num"<o."Cust-Num"
Order by "Count of orders";
Count of orders
--------------------
220
8160
使用序号,所以按3描述排序?按3描述排序大多数DBMS只允许设置操作的列号不知道为什么,很遗憾,它给了我一个语法错误…和哪个语法错误?SQL语句中的语法错误在或大约;10713I get a无法添加表格“SELECT”错误:/Progress OpenEdge显然允许使用单引号别名:-哦,好的,谢谢你的建议。但是,我遇到了与上述解决方案类似的错误:无法添加表“SELECT”。@CristinaK。某些数据库(如SQLite)不允许在union all中对子查询使用双括号。