Tsql 流分析:内部联接两个子查询

Tsql 流分析:内部联接两个子查询,tsql,join,azure-stream-analytics,Tsql,Join,Azure Stream Analytics,我在流分析中使用了两个子查询,以便可以运行两个AzureML函数 WITH subquery as ( SELECT id as id, username as username, try_cast(startTime as datetime) as startTime, try_cast(endTime as datetime) as endTime, AC as AC, FM as FM, UC as U

我在流分析中使用了两个子查询,以便可以运行两个AzureML函数

WITH subquery as (
    SELECT
        id as id,
        username as username,
        try_cast(startTime as datetime) as startTime,
        try_cast(endTime as datetime) as endTime,
        AC as AC, FM as FM, UC as UC, 
        DL as DL, DS as DS, DP as DP,
        LB as LB, ASTV as ASTV, MSTV as MSTV,
        ALTV as ALTV, MLTV as MLTV, Width as Width,
        Min as Min, Max as Max, Nmax as Nmax,
        Nzeros as Nzeros, Mode as Mode, Mean as Mean,
        Median as Median, Variance as Variance, Tendency as Tendency,
        rms,fmed,fpeak,sample_entropy,
        EventProcessedUtcTime as EventProcessedUtcTime,
        Distress(AC,FM,UC,DL,DS,DP,1,LB,ASTV,MSTV,ALTV,MLTV,
            Width,Min,Max,Nmax,Nzeros,Mode,Mean,Median,Variance,
            Tendency,1,1,1,1,1,1,1,1,1,1,1,1) as resultFHR
    FROM
        iot
    ),
subquery2 as (
    SELECT
        id as id,
        try_cast(startTime as datetime) as startTime,
        try_cast(endTime as datetime) as endTime,
        AC as AC, FM as FM, UC as UC, 
        DL as DL, DS as DS, DP as DP,
        LB as LB, ASTV as ASTV, MSTV as MSTV,
        ALTV as ALTV, MLTV as MLTV, Width as Width,
        Min as Min, Max as Max, Nmax as Nmax,
        Nzeros as Nzeros, Mode as Mode, Mean as Mean,
        Median as Median, Variance as Variance, Tendency as Tendency,
        rms,fmed,fpeak,sample_entropy,
        EventProcessedUtcTime as EventProcessedUtcTime,
        Labour("",1,1,1,"",rms,fmed,fpeak,sample_entropy,"","") as resultUC
    FROM
        iot
    )

SELECT
    id as id,
    username as username,
    startTime as startTime,
    endTime as endTime,
    AC as AC, FM as FM, UC as UC, 
    DL as DL, DS as DS, DP as DP,
    LB as LB, ASTV as ASTV, MSTV as MSTV,
    ALTV as ALTV, MLTV as MLTV, Width as Width,
    Min as Min, Max as Max, Nmax as Nmax,
    Nzeros as Nzeros, Mode as Mode, Mean as Mean,
    Median as Median, Variance as Variance, Tendency as Tendency,
    EventProcessedUtcTime as EventProcessedUtcTime,
    resultFHR.[classes] as distress,
    resultFHR.[probabilities] as distressProbability,
    resultUC.[classes] as labour,
    resultUC.[probabilities] as labourProbability
INTO
    sql
FROM
    subquery INNER JOIN subquery2 ON subquery.id = subquery2.id 
    AND DATEDIFF(second, subquery, subquery2) BETWEEN 0 AND 20


SELECT
    *
INTO
    c2d
FROM
    subquery INNER JOIN subquery2 ON subquery.id = subquery2.id 
    AND DATEDIFF(second, subquery, subquery2) BETWEEN 0 AND 20
我尝试使用内部联接来联接两个子查询,但它适用于第二个查询,而不适用于第一个查询。当我在第一次查询中使用内部联接时,它将显示一个错误

无效的列名:“id”。具有此名称的列不存在


有什么解决方案吗?

既然您连接了两个源
子查询
子查询2
,那么您需要像在ON子句中那样用源名称限定列(
subquery.id=subquery2.id

仅当您只有一个源时才允许使用非限定名称,例如在
子查询
步骤中

更改列引用以完全限定它们,如下所示:

挑选
subquery.id作为id,
subquery.username作为用户名,
subquery.startTime作为startTime,
subquery.endTime作为endTime,
...

由于您连接了两个源
子查询
子查询2
,因此需要使用源名称限定列,就像在ON子句中那样(
subquery.id=subquery2.id

仅当您只有一个源时才允许使用非限定名称,例如在
子查询
步骤中

更改列引用以完全限定它们,如下所示:

挑选
subquery.id作为id,
subquery.username作为用户名,
subquery.startTime作为startTime,
subquery.endTime作为endTime,
...

为什么不';为什么不从sql中选择*进入c2d;难道你不能从sql中选择*进入c2d吗?