2013-04-16 34 views
0

如何將這三個查詢合併爲一個查詢,以便可以從此查詢創建單個視圖?如何將這三個查詢從數據庫組合到一個視圖

CREATE VIEW v1 AS 
SELECT rp.ProjectName, rp.TaxRegime, rp.CashflowReportProfilePrimaryKey_ReportPrimaryKey FROM ReportProfiles rp 
WHERE rp.CashflowReportProfilePrimaryKey_ReportPrimaryKey IS NOT NULL 
GROUP BY rp.ProjectName, rp.TaxRegime, rp.CashflowReportProfilePrimaryKey_ReportPrimaryKey 

CREATE VIEW v2 AS 
SELECT vd.Year, vd.Data, r.ReportPrimaryKey FROM VectorData vd, Reports r 
WHERE vd.FK_Vector = r.Pretax_VectorID AND vd.Data != 0 AND LEN(r.Name) < 1 

SELECT v1.ProjectName, v1.TaxRegime, v2.Year, FORMAT(v2.Data, 'N', 'nb-NO') FROM v1, v2 
WHERE v1.CashflowReportProfilePrimaryKey_ReportPrimaryKey = v2.ReportPrimaryKey 
ORDER BY v1.ProjectName, v2.Year 

回答

1

您可以使用CTE這樣的,並以此作爲機構新的觀點:

Create View View1 as 
with v1 AS 
    (
    SELECT 
     rp.ProjectName, 
     rp.TaxRegime, 
     rp.CashflowReportProfilePrimaryKey_ReportPrimaryKey 
    FROM ReportProfiles rp 
    WHERE rp.CashflowReportProfilePrimaryKey_ReportPrimaryKey IS NOT NULL 
    GROUP BY rp.ProjectName, rp.TaxRegime, rp.CashflowReportProfilePrimaryKey_ReportPrimaryKey 
    ) 
    , v2 AS 
    (
    SELECT 
     vd.Year, 
     vd.Data, 
     r.ReportPrimaryKey 
    FROM VectorData vd, Reports r 
    WHERE vd.FK_Vector = r.Pretax_VectorID AND vd.Data != 0 AND LEN(r.Name) < 1 
    ) 
    SELECT 
     v1.ProjectName, 
     v1.TaxRegime, 
     v2.Year, 
     FORMAT(v2.Data, 'N', 'nb-NO') 
    FROM v1, v2 
    WHERE v1.CashflowReportProfilePrimaryKey_ReportPrimaryKey = v2.ReportPrimaryKey 
    ORDER BY v1.ProjectName, v2.Year 
+0

如何使用這個身體的看法? – jonas

+0

我編輯我的答案與視圖的創建聲明。 – dferidarov

+0

所有缺少的是將FORMAT列命名爲某事。 'FORMAT(v2.Data,'N','nb-NO')作爲'Data'來使它工作。非常感謝你! =) – jonas

相關問題