我有一个关于子查询的问题,我不确定如何有效地谷歌它;这感觉是黑客,但它的工作。
它使用一个临时表(#OrderProcessDates),我从LinkedServer的MySQL数据库中预先加载了所有Ordernr和Processdata数据。
SELECT Ordernr
, CASE WHEN OrderStartDate IS NULL THEN (SELECT MIN(x.ProcessDate) from (SELECT * FROM #OrderProcessDates WHERE #OrderProcessDates.Ordernummer = Ordernr) as x)
ELSE OrderStartDate
END as OrderStartDate
, CASE WHEN OrderStopDate IS NULL AND OrderFinished = 1 THEN (SELECT MAX(x.ProcessDate) from (SELECT * FROM #OrderProcessDates WHERE #OrderProcessDates.Ordernummer = Ordernr) as x)
ELSE OrderStopDate
END as OrderStopDate
FROM (
SELECT Ordernummer as Ordernr
, OrderStartDate
, OrderStopDate
, OrderFinished
FROM OPENQUERY([LinkedServer],
'SELECT Ordernummer,Table2.DateCreated as OrderStartDate, Table2.DateFinished as OrderStopDate, Table2.Afgemeld as OrderFinished
FROM Database.Table1
JOIN Database.Table2 as ordernummers ON Table2.idordernummers = Table1.ordernummer '
) as sourcedata
) as fixedata
有没有更好的方法在子查询中使用 "ordernr";或者总是被迫在查询周围使用查询来处理未知值?
编辑:删除了之前的问题;其中包含了非工作的SQL;这可以工作,但需要知道这是否是 "方式"