将语句转换为Crystal Reports SQL表达式

时间:2016-10-14 13:36:28

标签: sql-server crystal-reports

我有一个在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)
  )

但是,我认为我需要在第二个查询中使用别名来比较行号。我还是坚持那个。

0 个答案:

没有答案