我正在尝试按月指定特定的UserRating指定范围。当我在下面使用它时,它没有额外的行:
Select
Distinct(Table2.AccountNumber),
Jan11=Case
When Datepart(yy,Org.Billdate)=2011 and Datepart(mm,Org.Billdate) = 01 then Table2.UserRating
END
From (
Select Distinct(Table1.AccountNumber) as UseThisNumber, Table1.RegionID as UseThisRegionID
From AccountDetail Table1
Where Table1.RegionID in (
Select Distinct(Reg.RegionID)
From RegionOrganizationTable Reg where Datepart(yy,Reg.Billdate)=2011 and Datepart(mm,Reg.Billdate) = 01) and
Table1.UserRating in (‘Very Satisfied’, ‘Mostly Satisfied, ‘Satisfied’)
Group by Table1.AccountNumber, Table1.RegionID) GroupedValues,
AccountDetail Table2
RegionOrganizationTable Org
Where Table2.AccountNumber =GroupedValues.UseThisNumber
and Table2 UseThisRegionID=GroupedValues.UseThisRegionID
and Org.RegionID= GroupedValues.UseThisRegionID
Order by Table2.AccountNumber
但是,当我将嵌套组件中的Datepart条件更改为:
时Datepart(yy,Reg.Billdate)>2010
(因为这实际上是我要检查的日期范围),并删除:
Datepart(mm,Reg.Billdate)=01
重复2011年1月以前所有符合条件的AccountNumbers但返回NULL值。当我添加其他月份(即Feb11 = Case when ....)
时,这种情况更加复杂以下是第一种情况下的输出结果:
账户号码..... Jan11
123456 ...................非常满意
143457 ...................大部分满意
163458个...................满意
183459 ...................非常满意
203460 ...................非常满意
这是第二个(我 BOLDED 重复这里以便于识别)
账户号码..... Jan11
123456 ...................非常满意
123456 ................... NULL
123499 ................... NULL
133499 ................... NULL
143457 ...................非常满意
143457 ................... NULL
143499 ................... NULL
153499 ................... NULL
的 163458 ................... NULL
163458 ...................满意
173458 ................... NULL
173499 ................... NULL
183459 ...................非常满意
183459 ................... NULL
183499 ................... NULL
193459 ................... NULL
的 203460 ................... NULL
203460 ...................非常满意