T-SQL子查询以前面的列作为paramerter进行选择。

问题描述 投票:0回答:1

我有一个关于子查询的问题,我不确定如何有效地谷歌它;这感觉是黑客,但它的工作。

它使用一个临时表(#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;这可以工作,但需要知道这是否是 "方式"

mysql sql sql-server openquery
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.