【发布时间】:2016-11-03 14:10:48
【问题描述】:
使用 sql 过程,遇到一个找不到解决方案的问题。
表 A 包含字段 a、b、c。 还有一个包含字段 a、w、x、y、z 的表 B。
在这里,我想要两个表的连接结果,其中 A.a = B.a 并在输出中选择 c、x、y、z 等字段,其中 w 是最小值。 w 是一个整数。 以下代码有帮助,但是当我想显示表 2 中的更多字段时,出现错误提示未包含 Group by 子句。
SELECT OutO.routingSequence,
tbl2.a AS parentOrderNumber,
tbl2.c AS operationNumber,
tbl2.d as headerStatus,
tbl2.e as orderNumber
FROM Operation OutO
JOIN (
SELECT a, MIN(c) c
FROM (
SELECT h.parentordernumber a, o.operationNumber c
FROM header h , operation o
WHERE o.ordernumber=h.Parentordernumber
AND (
SELECT DATEDIFF(day,o.scheduledStartDate, GETDATE()) AS DiffDate
) < 3
AND (
SELECT DATEDIFF(day,o.scheduledStartDate, GETDATE()) AS DiffDate
) > -5
) tbl
GROUP BY a
) tbl2
ON OutO.ordernumber = tbl2.a
WHERE OutO.operationnumber = tbl2.c
请帮忙!!!
【问题讨论】:
-
我尝试重新格式化您的 SQL 以使其更具可读性,但对我来说仍然没有多大意义。它看起来不像是有效的 SQL
-
stackoverflow 的新手,不能真正格式化代码。我希望以下一个对您有用,此代码正在运行,并且我能够看到所需的结果。但是,如果我想添加更多字段以从表 2 中进行选择,则会出现错误。如何避免这种情况?还有更好的逻辑吗?
-
@shalinimathur 可以使用错误详细信息更新您的问题,如果您可以添加该查询,效果会更好
-
代码已更新。在此代码中出现错误。请帮忙。
-
@shalinimathur 我无法在您的内部查询中找到列 d 和 e 我可以知道它在哪个表中可用
标签: mysql sql sql-server stored-procedures plsql