Merge two views into 1

  • I have the following 2 views in my SQL database. How can I "merge" these into 1 view?

    Views

    CREATE VIEW dbo.vwMCA

    AS

    SELECT     mod_code, SUM(smr_mcrd) AS sum_smr_mcrd

    FROM         dbo.ins_smr

    GROUP BY mod_code

    CREATE VIEW dbo.vwMCB

    AS

    SELECT     mod_code, SUM(smo_mcrd) AS sum_smo_mcrd

    FROM         dbo.cam_smo

    GROUP BY mod_code

    Tables and values

    CREATE TABLE [dbo].[ins_smr] (

     [mod_code] [char] (12) COLLATE Latin1_General_CI_AS NOT NULL ,

     [smr_mcrd] [int] NULL

    ) ON [PRIMARY]

    GO

    CREATE TABLE [dbo].[cam_smo] (

     [mod_code] [char] (12) COLLATE Latin1_General_CI_AS NOT NULL ,

     [smo_mcrd] [int] NULL

    ) ON [PRIMARY]

    GO

    INSERT INTO [dbo].[cam_smo] ([mod_code], [smo_mcrd]) VALUES ('D01011', 100)

    INSERT INTO [dbo].[cam_smo] ([mod_code], [smo_mcrd]) VALUES ('D01011', 100)

    INSERT INTO [dbo].[cam_smo] ([mod_code], [smo_mcrd]) VALUES ('D01011', 100)

    INSERT INTO [dbo].[cam_smo] ([mod_code], [smo_mcrd]) VALUES ('D01011', 100)

    INSERT INTO [dbo].[cam_smo] ([mod_code], [smo_mcrd]) VALUES ('D01011', 100)

    INSERT INTO [dbo].[cam_smo] ([mod_code], [smo_mcrd]) VALUES ('D01011', 100)

    INSERT INTO [dbo].[ins_smr] ([mod_code], [smr_mcrd]) VALUES ('D01011', 100)

    INSERT INTO [dbo].[ins_smr] ([mod_code], [smr_mcrd]) VALUES ('D01011', 100)

    INSERT INTO [dbo].[ins_smr] ([mod_code], [smr_mcrd]) VALUES ('D01011', 100)

     

    Thanks,

    Mark

  • Suggest: ( have omitted the CREATE VIEW statement )

    1.

    SELECT

     twotab.mod_code,

     SUM(twotab.sum_smo_mcrd) AS sum_smr_mcrd,

     SUM(twotab.sum_smr_mcrd) AS sum_smr_mcrd

    FROM

     ( SELECT mod_code, 0 as sum_smo_mcrd, SUM(smr_mcrd) AS sum_smr_mcrd

     FROM dbo.ins_smr

     GROUP BY mod_code

     UNION ALL

     SELECT mod_code, SUM(smo_mcrd) AS sum_smo_mcrd, 0 AS sum_smr_mcrd

     FROM dbo.cam_smo

     GROUP BY mod_code ) AS twotab

    GROUP BY

     twotab.mod_code

    2.

    SELECT

     twotab.mod_code,

     SUM(twotab.sum_smr_mcrd) AS sum_total

    FROM

     ( SELECT mod_code, SUM(smr_mcrd) AS sum_smr_mcrd

     FROM dbo.ins_smr GROUP BY mod_code

     UNION ALL

     SELECT mod_code, SUM(smo_mcrd)

     FROM dbo.cam_smo GROUP BY mod_code ) AS twotab

    GROUP BY

     twotab.mod_code

    /rockmoose


    You must unlearn what You have learnt

  • Thanks

Viewing 3 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic. Login to reply