我有一个在SQL Server中运行良好的SQL命令。这是查询:
SELECT TOP 1000
(
SELECT COUNT(LINENUM)
FROM OEORDD D1
WHERE D1.ORDUNIQ = OEORDD.ORDUNIQ
)
- (SELECT COUNT(LINENUM)
FROM OEORDD D1
WHERE D1.ORDUNIQ = OEORDD.ORDUNIQ
AND D1.LINENUM > OEORDD.LINENUM)
FROM OEORDD
ORDER BY ORDUNIQ, LINENUM
查询查看订单上的总行数,然后查看当前的" LINENUM"领域。使用LINENUM字段的值,它会查看订单中有多少行具有更大的LINENUM值,并从订单上的行数中减去它以获得正确的行号。
当我尝试将其作为SQL表达式添加到版本14.0.2.364中时,如下所示:
(
(
SELECT COUNT("OEORDD"."LINENUM")
FROM "OEORDD" "D1"
WHERE "D1"."ORDUNIQ" = "OEORDD"."ORDUNIQ"
)
- (SELECT COUNT("OEORDD"."LINENUM")
FROM "OEORDD" "D1"
WHERE "D1"."ORDUNIQ" = "OEORDD"."ORDUNIQ"
AND "D1"."LINENUM" > "OEORDD"."LINENUM"
)
)
我收到错误"专栏' SAMDB.dbo.OEORDD.ORDUNIQ'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
如果我尝试添加GROUP BY" OEORDD"。" ORDUNIQ"最后,我在关键字' GROUP'附近得到"语法错误。我已经尝试过添加"来自OEORDD"在查询结束时,它出现在单词" FROM"上。我在数据库专家中链接了正确的表。
编辑--------------
我能够通过删除别名来获得第一个查询,如下所示:
(
SELECT COUNT(LINENUM)
FROM OEORDD
WHERE OEORDH.ORDUNIQ=OEORDD.ORDUNIQ)
)
但是,我认为我需要在第二个查询中使用别名来比较行号。我还是坚持那个。