【问题标题】:Can we join tables in CROSS APPLY?我们可以在 CROSS APPLY 中加入表格吗?
【发布时间】:2016-01-26 20:02:26
【问题描述】:

我的查询是:

CROSS APPLY(
SELECT SUM(Payment)
FROM (
    SELECT TOP(ABS(2)) Payment 
    FROM dbo.table1 
) AS T
) AS EC(ExpCalc)

加入后我需要这样的东西:

CROSS APPLY(
SELECT SUM(Payment)
FROM (
    SELECT TOP(ABS(2)) Payment 
    FROM dbo.table1 t1
) AS T
) AS EC(ExpCalc) JOIN dbo.info i on t1.key = i.key 

我怎样才能做到这一点?

【问题讨论】:

    标签: sql sql-server-2008 join common-table-expression


    【解决方案1】:

    首先,你不能做你想做的事,因为你没有返回key。但更大的答案是您可以执行join,但您可以将其作为相关子查询:

    CROSS APPLY
    (SELECT SUM(Payment)
     FROM (SELECT TOP(ABS(2)) Payment 
           FROM dbo.table1 t1
           WHERE t1.key = i.key
    ------^
          ) T
    ) AS EC(ExpCalc) 
    

    这将出现在FROM 子句中,如下所示:

    FROM dbo.info i CROSS APPLY
    (SELECT SUM(Payment)
     FROM (SELECT TOP(ABS(2)) Payment 
           FROM dbo.table1 t1
           WHERE t1.key = i.key
          ) T
    ) AS EC(ExpCalc) 
    

    【讨论】:

    • i(dbo.info) 是另一个表,你会把它放在哪里?我想你已经错过了。
    猜你喜欢
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多