Sql 使用相同的键组合行中的数据
我的sql语句如下所示Sql 使用相同的键组合行中的数据,sql,sql-server,tsql,sql-server-2008-r2,Sql,Sql Server,Tsql,Sql Server 2008 R2,我的sql语句如下所示 SELECT fe.AdmSiteID,A.SiteDescription, '' AS SNAP, '' AS TANF, '' AS Foster, '' AS FDPIR, '' AS Homeless, '' AS Migrant, '' AS Runaway, '' AS HeadStart, '' AS EvenStart, '' AS DirectCertified, '' AS NoApplicat
SELECT fe.AdmSiteID,A.SiteDescription,
'' AS SNAP, '' AS TANF, '' AS Foster, '' AS FDPIR, '' AS Homeless, '' AS Migrant, '' AS Runaway,
'' AS HeadStart, '' AS EvenStart, '' AS DirectCertified, '' AS NoApplication, '' AS FreeIncome, '' AS ReducedIncome,
'' AS RefusedBenefits,'' AS DeniedIncome, '' AS DeniedVerification, '' AS DeniedNotValid, '' AS TempFreeGrace, '' AS TempReducedGrace,
'' AS DeniedInactive, '' AS DNQ, '' AS ExpiredGrace
FROM FarEligibilityEnrollmentCounts fe
inner join AdmSites A on fe.AdmSiteID = A.AdmSiteID
GROUP BY fe.AdmSiteID,A.SiteDescription
union
select fe.AdmSiteID,A.SiteDescription,sum(PatronCount) as SNAP, '' AS TANF, '' AS Foster, '' AS FDPIR, '' AS Homeless, '' AS Migrant, '' AS Runaway,
'' AS HeadStart, '' AS EvenStart, '' AS DirectCertified, '' AS NoApplication, '' AS FreeIncome, '' AS ReducedIncome,
'' AS RefusedBenefits,'' AS DeniedIncome, '' AS DeniedVerification, '' AS DeniedNotValid, '' AS TempFreeGrace, '' AS TempReducedGrace,
'' AS DeniedInactive, '' AS DNQ, '' AS ExpiredGrace
from FarEligibilityEnrollmentCounts fe
inner join AdmSites A on fe.AdmSiteID = A.AdmSiteID
where fe.FarStudentCaseID = '4FA4AED1-75C9-4CB4-9FF2-102C2D964CC1'
Group BY fe.AdmSiteID,A.SiteDescription
union
select fe.AdmSiteID,A.SiteDescription,'' as SNAP, sum(PatronCount) AS TANF, '' AS Foster, '' AS FDPIR, '' AS Homeless, '' AS Migrant, '' AS Runaway,
'' AS HeadStart, '' AS EvenStart, '' AS DirectCertified, '' AS NoApplication, '' AS FreeIncome, '' AS ReducedIncome,
'' AS RefusedBenefits,'' AS DeniedIncome, '' AS DeniedVerification, '' AS DeniedNotValid, '' AS TempFreeGrace, '' AS TempReducedGrace,
'' AS DeniedInactive, '' AS DNQ, '' AS ExpiredGrace
from FarEligibilityEnrollmentCounts fe
inner join AdmSites A on fe.AdmSiteID = A.AdmSiteID
where fe.FarStudentCaseID = 'B348D33C-5C32-4CFE-B508-1E0CE2A9D428'
Group BY fe.AdmSiteID,A.SiteDescription
AE1EF8E3-A093-410D-A02A-2B6DB334C758 Dowell Middle School 0 0
0359AF48-882F-4D54-B39D-341B17D64403 Evans Middle School 0 0
0359AF48-882F-4D54-B39D-341B17D64403 Evans Middle School 0 1595
0359AF48-882F-4D54-B39D-341B17D64403 Evans Middle School 1045 0
查询返回的数据如下所示
SELECT fe.AdmSiteID,A.SiteDescription,
'' AS SNAP, '' AS TANF, '' AS Foster, '' AS FDPIR, '' AS Homeless, '' AS Migrant, '' AS Runaway,
'' AS HeadStart, '' AS EvenStart, '' AS DirectCertified, '' AS NoApplication, '' AS FreeIncome, '' AS ReducedIncome,
'' AS RefusedBenefits,'' AS DeniedIncome, '' AS DeniedVerification, '' AS DeniedNotValid, '' AS TempFreeGrace, '' AS TempReducedGrace,
'' AS DeniedInactive, '' AS DNQ, '' AS ExpiredGrace
FROM FarEligibilityEnrollmentCounts fe
inner join AdmSites A on fe.AdmSiteID = A.AdmSiteID
GROUP BY fe.AdmSiteID,A.SiteDescription
union
select fe.AdmSiteID,A.SiteDescription,sum(PatronCount) as SNAP, '' AS TANF, '' AS Foster, '' AS FDPIR, '' AS Homeless, '' AS Migrant, '' AS Runaway,
'' AS HeadStart, '' AS EvenStart, '' AS DirectCertified, '' AS NoApplication, '' AS FreeIncome, '' AS ReducedIncome,
'' AS RefusedBenefits,'' AS DeniedIncome, '' AS DeniedVerification, '' AS DeniedNotValid, '' AS TempFreeGrace, '' AS TempReducedGrace,
'' AS DeniedInactive, '' AS DNQ, '' AS ExpiredGrace
from FarEligibilityEnrollmentCounts fe
inner join AdmSites A on fe.AdmSiteID = A.AdmSiteID
where fe.FarStudentCaseID = '4FA4AED1-75C9-4CB4-9FF2-102C2D964CC1'
Group BY fe.AdmSiteID,A.SiteDescription
union
select fe.AdmSiteID,A.SiteDescription,'' as SNAP, sum(PatronCount) AS TANF, '' AS Foster, '' AS FDPIR, '' AS Homeless, '' AS Migrant, '' AS Runaway,
'' AS HeadStart, '' AS EvenStart, '' AS DirectCertified, '' AS NoApplication, '' AS FreeIncome, '' AS ReducedIncome,
'' AS RefusedBenefits,'' AS DeniedIncome, '' AS DeniedVerification, '' AS DeniedNotValid, '' AS TempFreeGrace, '' AS TempReducedGrace,
'' AS DeniedInactive, '' AS DNQ, '' AS ExpiredGrace
from FarEligibilityEnrollmentCounts fe
inner join AdmSites A on fe.AdmSiteID = A.AdmSiteID
where fe.FarStudentCaseID = 'B348D33C-5C32-4CFE-B508-1E0CE2A9D428'
Group BY fe.AdmSiteID,A.SiteDescription
AE1EF8E3-A093-410D-A02A-2B6DB334C758 Dowell Middle School 0 0
0359AF48-882F-4D54-B39D-341B17D64403 Evans Middle School 0 0
0359AF48-882F-4D54-B39D-341B17D64403 Evans Middle School 0 1595
0359AF48-882F-4D54-B39D-341B17D64403 Evans Middle School 1045 0
我正在尝试合并埃文斯中学的3个专栏,这样最终的结果应该是
AE1EF8E3-A093-410D-A02A-2B6DB334C758 Dowell Middle School 0 0
0359AF48-882F-4D54-B39D-341B17D64403 Evans Middle School 1045 1595
有办法做到这一点吗?将选项与
select AdmSiteID
, SiteDescription
, sum(SNAP) as TotalSNAP
, sum(TANF) as TotalTANF
, ... Other Sums Here ...
from (
... Your Query With Unions Here ...
) as SubQueryAlias
group by
AdmSiteID
, SiteDescription
此外,您还可以尝试此脚本,而无需过多的联合
select fe.AdmSiteID,A.SiteDescription,
ISNULL(SUM(CASE WHEN fe.FarStudentCaseID = '4FA4AED1-75C9-4CB4-9FF2-102C2D964CC1' THEN PatronCount END), 0) AS SNAP,
ISNULL(SUM(CASE WHEN fe.FarStudentCaseID = 'B348D33C-5C32-4CFE-B508-1E0CE2A9D428' THEN PatronCount END), 0) AS TANF,
'' AS Foster, '' AS FDPIR, '' AS Homeless, '' AS Migrant, '' AS Runaway,
'' AS HeadStart, '' AS EvenStart, '' AS DirectCertified, '' AS NoApplication, '' AS FreeIncome, '' AS ReducedIncome,
'' AS RefusedBenefits,'' AS DeniedIncome, '' AS DeniedVerification, '' AS DeniedNotValid, '' AS TempFreeGrace, '' AS TempReducedGrace,
'' AS DeniedInactive, '' AS DNQ, '' AS ExpiredGrace
from FarEligibilityEnrollmentCounts fe
inner join AdmSites A on fe.AdmSiteID = A.AdmSiteID
Group BY fe.AdmSiteID,A.SiteDescription
简单演示