我正在尝试按月获取指定范围内的特定 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....)
以下是第一种情况下的输出:
AccountNumber .....Jan11
123456 ......................非常满意
143457 ......................大部分满意
163458 ............满意
183459 ............非常满意
203460 ...... ..............非常满意
这是第二个(我在这里加粗了重复项以便于识别)
AccountNumber .....Jan11
123456 ............非常满意
123456 ............NULL
123499............空
133499............空
143457....... ............大部分满足
143457............NULL
143499............ .....NULL
153499............NULL
163458............NULL
163458。 ......................满足
173458............NULL
173499............ ..........NULL
183459 ............非常满意
183459 ...... ...空
183499 ....空
193459 ....空
203460 ... ................NULL
203460..........................很满意