SQL查询将派生表转换为普通连接(索引视图)

时间:2013-02-25 23:39:20

标签: sql sql-server left-join

我有一个跟随SQL查询的派生表,因此我无法创建索引视图的CLUSTERED索引。所以我必须将派生表转换为普通连接。

SELECT
......
FROM 
dbo.invoice i

LEFT JOIN 
(
    SELECT SUM(amount) as servicesamount
    ,ise.invoiceuid
    ,ise.episodeuid
    ,ise.memberuid
    ,ev.caseuid

    FROM dbo.invoice_services ise
    JOIN dbo.invoice inv on inv.invoiceuid = ise.invoiceuid
    JOIN dbo.event ev ON ev.eventuid = ise.episodeuid -- JOIN IN ORDER TO BRING EVENT INVOCIES ONLY (DENTAL INVOICES COULD EXIST)
    GROUP BY ise.invoiceuid,ise.episodeuid,ise.memberuid,ev.caseuid

) ise ON ise.invoiceuid = i.invoiceuid

有关如何转换

的任何线索
LEFT JOIN 
    (
        SELECT SUM(amount) as servicesamount
        ,ise.invoiceuid
        ,ise.episodeuid
        ,ise.memberuid
        ,ev.caseuid

        FROM dbo.invoice_services ise
        JOIN dbo.invoice inv on inv.invoiceuid = ise.invoiceuid
        JOIN dbo.event ev ON ev.eventuid = ise.episodeuid -- JOIN IN ORDER TO BRING EVENT INVOCIES ONLY (DENTAL INVOICES COULD EXIST)
        GROUP BY ise.invoiceuid,ise.episodeuid,ise.memberuid,ev.caseuid

    ) ise

正常加入?

欣赏它!!

1 个答案:

答案 0 :(得分:0)

你可以试试这个

SELECT ...
  ,SUM(amount) as servicesamount
  ,ise.invoiceuid
  ,ise.episodeuid
  ,ise.memberuid
  ,ev.caseuid
  ,...
FROM dbo.invoice inv 
 LEFT JION dbo.invoice_services ise ON inv.invoiceuid = ise.invoiceuid
 LEFT JOIN dbo.event ev ON ev.eventuid = ise.episodeuid
GROUP BY inv..., ise.invoiceuid,ise.episodeuid,ise.memberuid,ev.caseuid