我无法使此查询有效。我已经读过别名在分组中不起作用,但是我该如何解决呢?
SELECT
DATE_DOCU,
(SELECT LIN FROM INVE01 WHERE INVE01.CVE_ART=MINVE01.CVE_ART) AS LINE
FROM
MINVE01
GROUP BY
DATE_DOCU, LINE
答案 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);