sql-server - 将 SQL Server 中的子选择查询转换为 DB2 语法 Order By Clause
问题描述
目前,我正在尝试处理一个查询,并试图找出一种方法来使用 DB2 中的 Order By 子句,该子句不起作用但当前在 SQL Server 中运行时针对 DBMS 运行。SQL Server 语法如下,查询是子查询而不是连接。我已经尝试了不同的方法来转换数据,因此它可以通过将表连接在一起来提取 DB2 语法中的结果集,同时使用 Order By Clause 修补这些表。目标是尝试按升序(从小到大)对 boxNumber 列进行排序。我能否就如何成功提取结果集而不收到非 -104 或 -206 的 SQL 错误代码获得一些建议?SQL Server 和 DB2 语法在 Order By 子句方面是否存在一定的限制差异?
SQL 服务器:
SELECT *, (SELECT boxNumber FROM PRODUCTS WHERE ORDER.orderId =orderId) AS boxNumber
FROM ORDER
WHERE ((istask = 0 AND historyflag= 0) AND
(orderId IN (SELECT orderId
FROM PRODUCTS
WHERE ORDER.orderId = orderId AND [STATUS] = 'AVAIL' OR [STATUS]='INSTOCK')))
ORDER BY (SELECT boxNumber FROM PRODUCTS WHERE ORDER.orderId =orderId);
下面是我尝试运行的 DB2 中的一些代码示例: 示例 1:
SELECT *, (SELECT boxNumber FROM PRODUCTS WHERE ORDER.orderId =orderId) AS boxNumber
FROM ORDER
WHERE ((istask = 0 AND historyflag= 0) AND
(orderId IN (SELECT orderId
FROM PRODUCTS
WHERE ORDER.orderId = orderId AND STATUS = 'AVAIL' OR STATUS='INSTOCK')))
ORDER BY boxNumber;
示例 2:
SELECT *
FROM ORDER
WHERE ((istask = 0 AND historyflag = 0)
AND (orderId IN (SELECT orderId
FROM PRODUCTS prod LEFT JOIN ORDER ord
ON prod.orderId = ord.orderId
WHERE STATUS IN ('AVAIL','INSTOCK') ORDER BY prod.boxNumber)))
示例 3:
SELECT *
FROM ORDER
WHERE ((istask = 0 AND historyflag = 0)
AND (orderId IN (SELECT orderId
FROM PRODUCTS prod LEFT JOIN ORDER ord
ON prod.orderId = ord.orderId
WHERE ORDER.orderId = orderId AND STATUS IN ('AVAIL','INSTOCK') ORDER BY prod.boxNumber)))
解决方案
select * from (
SELECT *,
(SELECT boxNumber
FROM PRODUCTS
WHERE ORDER.orderId = orderId) AS boxNumber
FROM ORDER
WHERE istask = 0 AND historyflag= 0
AND orderId IN (SELECT orderId
FROM PRODUCTS
WHERE ORDER.orderId = orderId
AND STATUS = 'AVAIL' OR STATUS = 'INSTOCK')
) as T
ORDER BY boxNumber;
如果问题确实在ORDER BY
子句中,那应该可以解决问题。不应该;AFIAK,该子句应接受任何SELECT
列,包括子查询。(将来,请务必在您的问题中包含文字错误消息。回答您问题的人可能会觉得它很有帮助。)
我冒昧地删除了多余的括号和括号引号。不必要的标点符号只会使代码更难阅读。
推荐阅读
- c++ - 读取访问冲突标志 = 0x0(第一次机会)
- python - 您如何从肥皂响应中检索值
- drools - OptaPlanner 如何拒绝启发式部分的移动
- python-3.x - 有什么方法可以根据我绘制的二维数据更改 GLSL 中的背景颜色
- python - Pyinstaller 是否能够将 .py 文件与音频一起转换为 exe?
- opencv - 如果焦距和视差以像素为单位,视差图是否以米为单位提供深度?
- python - Matplotlib 由于空刻度而污染了 x 轴
- loops - 使用属性迭代中介表达式
- caching - Shopify 缓存 - 哪些操作会导致清除缓存
- javascript - 使用没有访问令牌的 MapBox GL JS