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 ..... Jan11123456
...................非常に満足
143457...................ほとんど満足
163458...................満足
183459...................非常に満足
203460....。 ..............非常に満足

そして、これが2番目です(認識しやすいように、ここで複製を太字にしました)

AccountNumber ..... Jan11123456
...................非常に満足
123456...................NULL

123499 ................... NULL 133499 ...................
NULL143457
......。 ............ほぼ満足
143457...................

NULL143499.............。 ..... NULL
153499 ................... NULL
163458 ...................
NULL163458。 ..................満足

173458...................
NULL173499........。 ..........
NULL183459...................非常に満足
183459................ ... NULL

183499 ................... NULL
193459 ................... NULL
203460 .. .. ................
NULL203460...................非常に満足

4

0 に答える 0