别名和分组

时间:2016-07-16 18:49:56

标签: sql firebird

我无法使此查询有效。我已经读过别名在分组中不起作用,但是我该如何解决呢?

SELECT 
 DATE_DOCU,
 (SELECT LIN FROM INVE01 WHERE INVE01.CVE_ART=MINVE01.CVE_ART) AS LINE
 FROM 
MINVE01 
GROUP BY
DATE_DOCU, LINE

4 个答案:

答案 0 :(得分:1)

你没有聚合功能,所以group by是无用的..你应该使用disctinct获取不同的值

  SELECT  DISTINCT 
    DATE_DOCU,
    (SELECT LIN FROM INVE01 WHERE INVE01.CVE_ART=MINVE01.CVE_ART) AS LINE
  FROM MINVE01 

答案 1 :(得分:0)

而不是使用Group By丢弃所有细节。尝试使用具有窗口函数的CTE(公用表表达式)(

CTE就像在主查询之前出现的子查询窗口函数是一种在一组行(窗口)上对数据进行分组和聚合的方法。

;WITH myCTE (RenameColumn1, RenameColumn2, RenameColumn3)
As (
   Select x, y, min(z) over (partition by a, b) as MinZ)
)
SELECT RenameColumn1, RenameColumn2, RenameColumn3
from myCTE
Where RenameColumn3 < 100

如果您不熟悉CTE或Window功能,请查看它们 并学习它们。

我努力使用Group By解决问题很长时间 用这种技术做一块蛋糕。一些我认为(或羞耻) 在我第一次学习它之后,这些东西被添加到SQL服务器中,但现在我已经放弃了我的年龄。

答案 2 :(得分:0)

获得相同结果的另一种变体:

while(choice != "left" || choice != "right" || choice != "up" || choice != "down")

答案 3 :(得分:-1)

ini_set('default_socket_timeout',$timeInSeconds);