当使用分组依据时,视图行数据值可以显示在单独的列中

问题描述 投票:0回答:1

我的SQL代码是这样:

CREATE VIEW [dbo].[UDV_Project_Summary_With_Beneficiary]
    SELECT 
        FiscalYear.FiscalYearName AS [Fiscal Year],
        dbo.Region.RegionName AS Region,
        COUNT(DISTINCT(Project.ProjectID)) AS [No of Projects],
        SUM(ISNULL(Project.Amount, 0) + ISNULL(Project.ContAmount, 0)) AS Amount,
        [dbo].[UDF_Get_BName](1, [dbo].[ProjectBeneficiaryDetail].BeneficiaryTypeID) AS Beneficiaries,
        SUM(ISNULL(ActualNoOfMale, 0)) AS Men,
        SUM(ISNULL(ActualNoOfFemale, 0)) AS Women,
        SUM(ISNULL(ActualNoOfMale, 0) + ISNULL(ActualNoOfFemale, 0)) AS Total
    FROM             
        dbo.Project 
    INNER JOIN
        dbo.Commune ON dbo.Project.CommuneIdProject = dbo.Commune.CommuneId 
    INNER JOIN
        dbo.Arrondissement ON dbo.Arrondissement.[ArrondissementId] = dbo.Commune.[ArrondissementId] 
    INNER JOIN
        dbo.Cercle ON dbo.Cercle.CercleId = dbo.Arrondissement.CercleId 
    INNER JOIN
        dbo.Region ON dbo.Region.RegionId = dbo.Cercle.RegionId 
    INNER JOIN
        ImplementingPartner ON dbo.ImplementingPartner.IPID = dbo.Project.IPID  
    INNER JOIN
        FiscalYear ON dbo.Project.FiscalYearID = dbo.FiscalYear.FiscalYearID 
    INNER JOIN
        ProjectCategory ON dbo.Project.ProjectCategoryID = dbo.ProjectCategory.ProjectCategoryID 
    INNER JOIN
        ProjectStatus ON dbo.Project.ProjectStatusID = dbo.ProjectStatus.ProjectStatusID 
    INNER JOIN
        [dbo].[ImplementingPartnerType] ON [dbo].[ImplementingPartnerType].[ImplementingPartnerTypeID] = ImplementingPartner.[ImplementingPartnerTypeID] 
    LEFT JOIN
        [dbo].[ProjectBeneficiaryDetail] ON dbo.Project.ProjectID =  dbo.[ProjectBeneficiaryDetail].ProjectID 
    GROUP BY  
        FiscalYear.FiscalYearName, Region.RegionName, [dbo].[ProjectBeneficiaryDetail].BeneficiaryTypeID

结果显示在此屏幕快照中:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9ZSXViSC5wbmcifQ==” alt =“在此处输入图像描述”>

但是我想使用SQL代码在下面的图像数据中显示如下。请帮我怎么做

我正在尝试通过使用PIVOT来做到这一点,但没有成功。我尝试这样

select [Intervention Areas], [No of Projects], Amount, Beneficiaries, Men, Women, Total 
into #Beneficiary_ProjectType
from [dbo].[UDV_Project_Summary_With_Beneficiary_ProjectType]


select *
from 
(
  select  [Intervention Areas], [No of Projects] ,Amount--, Men, Women, Total
  from #Beneficiary_ProjectType
) src
pivot
(
  sum([Amount])
  for Beneficiaries in ([DB], [IDB])
) piv;

但是说出列名未定义。请帮助我,如何使用透视图以正确的方式获得结果,如第二幅图所示。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9vanpxUi5wbmcifQ==” alt =“在此处输入图像描述”>

sql-server
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.