select sl.*,
(select pnd_invoiceno
from PINVDET
where PND_INVNO = sl.invno and
abs(DATEDIFF(ss, pnd_date, sl.adjustedon)) =
(select min(abs(DATEDIFF(ss, pnd_date, sl.adjustedon)))
from PINVDET
where pnd_invno = sl.invno))
from vwstocklog sl where sl.invno in (select invno from vwStockDiff)
order by sl.invno, sl.adjustedon
当我运行上面的查询时,我得到了错误:
在包含外部引用的聚合表达式中指定了多个列。如果要聚合的表达式包含外部引用,则该外部引用必须是表达式中引用的唯一列。
我理解它是说表达式min(abs(DATEDIFF(ss, pnd_date, sl.adjustedon)))
是问题,因为它sl.adjusted
在min()
聚合中引用,除非它是聚合表达式中引用的唯一列,否则它不能这样做。我不确定如何修复它。
我在这里尝试做的是找到pnd_invoiceno
记录中最接近同一项目pinvdet
的值的值(并且我认识到这有可能链接到多个记录)。pnd_date
sl.adjustedon
关于如何调整此查询以实现此目的的任何想法?