Sql server 产生不一致错误值的T-SQL代码

Sql server 产生不一致错误值的T-SQL代码,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,上图是我使用t-SQL表和视图制作的报告的输出的屏幕上限。每列有两个值,第一个值是当前数字,正斜杠后是每周的差值。对于我的大多数报告来说,这些数字看起来都很不错,但正如您所看到的,总计列中的差异值似乎完全错误 此表是使用以下代码创建的 SELECT ISNULL(a.[LRPR Biospecimen Consent], 'Missing') AS Consent, CONVERT(varchar, a.Oppong) + ' / ' + CONVERT(varchar, a.Op

上图是我使用t-SQL表和视图制作的报告的输出的屏幕上限。每列有两个值,第一个值是当前数字,正斜杠后是每周的差值。对于我的大多数报告来说,这些数字看起来都很不错,但正如您所看到的,总计列中的差异值似乎完全错误

此表是使用以下代码创建的

SELECT
   ISNULL(a.[LRPR Biospecimen Consent], 'Missing') AS Consent, 
   CONVERT(varchar, a.Oppong) + ' / ' + CONVERT(varchar, a.Oppong - ISNULL(b.Oppong, 0)) AS Oppong,
   CONVERT(varchar, a.Tousimis) + ' / ' + CONVERT(varchar, a.Tousimis - ISNULL(b.Tousimis, 0)) AS Tousimis,
   CONVERT(varchar, a.Willey) + ' / ' + CONVERT(varchar, a.Willey - ISNULL(b.Willey, 0)) AS Willey,
   CONVERT(varchar, a.Anderson) + ' / ' + CONVERT(varchar, a.Anderson - ISNULL(b.Anderson, 0)) AS Anderson, 
   CONVERT(varchar, a.Bacarra) + ' / ' + CONVERT(varchar, a.Bacarra - ISNULL(b.Bacarra, 0)) AS Bacarra,
   CONVERT(varchar, a.McMahon) + ' / ' + CONVERT(varchar, a.McMahon - ISNULL(b.McMahon, 0)) AS McMahon
FROM
   dbo.vw_RPT_Ourisman_BiospecimenConsentWithProvider_Pivot a 

   LEFT OUTER JOIN dbo.tbl_vw_RPT_Ourisman_BiospecimenConsentWithProvider_Pivot b 
   ON ...
这段代码的变体(仅更改了路径名)给出了正斜杠两侧数字的准确总值。我是一个SQL新手,似乎无法理解这段代码为什么停止工作

任何有用的建议都将不胜感激

编辑 下面是用于创建dbo.vw_RPT_Ourisman_biospecimenconsent和provider_Pivot总值的代码

 With T as ( SELECT     [LRPR Biospecimen Consent], [Oppong, Bridget A] AS Oppong,    [Tousimis, Eleni] AS Tousimis, [Willey, Shawna] AS Willey, [Anderson, Lyndsay] AS Anderson, 
                  [Bacarra, Minna Manalo] AS Bacarra, [McMahon, Ann] AS McMahon
FROM         vw_RPT_Ourisman_BiospecimenConsentWithProvider_List c PIVOT (count([Breast Provider]) FOR [Breast Provider] IN ([Oppong, Bridget A], [Tousimis, Eleni], 
                  [Willey, Shawna], [Anderson, Lyndsay], [Bacarra, Minna Manalo], [McMahon, Ann])) piv
WHERE     [LRPR Biospecimen Consent] IS NOT NULL)
SELECT     *
 FROM         T
UNION ALL
SELECT     'Total', SUM(Oppong), SUM(Tousimis), SUM(Willey), SUM(Anderson), SUM(Bacarra), SUM(McMahon)
FROM         T

如果您返回的任何数据包含空值,则结果可能与预期不符。您如何计算总行数?在LRPR Biospecimen Approval中“total”是一个值吗?还是您在报告本身中正在执行的操作?为什么没有“缺少”行?您是否以某种方式将其过滤掉?如果愿意,请将其余sql放在那里。顺便说一句--我们e更好的字段名(短,无空格)和表别名,这样您就可以更轻松地阅读/格式化代码。感谢您的建议和编辑。正如您所看到的,我正在使用pivot和sum函数创建总计。希望我能让大家更清楚地了解这一点。对于缺少的行,我很抱歉,我意识到这只是一个过滤器我使用这个通用sql代码的更大的例子。在我们的一些列中,值没有被填充,如果出现空计数,则列为缺少。