消除嵌套选择中的额外行

时间:2013-03-19 20:27:21

标签: sql-server select nested duplicate-removal

我正在尝试按月指定特定的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 ...................非常满意

0 个答案:

没有答案