0

我正在尝试按月获取指定范围内的特定 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..........................很满意

4

0 回答 0