2017-02-23 2 views
-1

私は最高の未払いのトップ10顧客を返すSQLクエリを作成しました。執行は製品レベルで行われます(各製品には独自の優位性があります)。SELECT TOP 10 rows

enter image description here

それまでは今、すべてが私の唯一の問題は、特定の顧客はもっとして1つの製品を持っているならば、第二の製品以上が第二画像で(理由のように同じCUSTOMER_ID下に分類されなければならないということで、正常に動作しますトップ10の他の9人のクライアントよりも低い顕著な伝染性を有する第1の製品)を有する。 クエリを変更するにはどうすればよいですか? SQL Server 2012では可能ですか?

enter image description here

私のクエリは次のとおりです。

select top 10 CUSTOMER_ID 
      ,S90T01_GROSS_EXPOSURE_THSD_EUR 
      ,S90T01_COGNOS_PROD_NAME 
      ,S90T01_DPD_C 
      ,PREVIOUS_BUCKET_DPD_REP 
      ,S90T01_BUCKET_DPD_REP 
from [dbo].[DM_07MONTHLY_DATA] 
where S90T01_CLIENT_SEGMENT = 'PI' 
     and YYYY_MM = '2017_01' 
group by CUSTOMER_ID 
     ,S90T01_GROSS_EXPOSURE_THSD_EUR 
     ,S90T01_COGNOS_PROD_NAME 
     ,S90T01_DPD_C 
     ,PREVIOUS_BUCKET_DPD_REP 
     ,S90T01_BUCKET_DPD_REP 
order by S90T01_GROSS_EXPOSURE_THSD_EUR desc; 
+1

[なぜ-かもしれ-I-ないアップロード・画像・オブ・コード]( http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557#285557) –

+0

あなたはそうですか最高の10の顧客を、すべての製品または最も高い個別の製品の合計「未処理」で欲しいのですか? – iamdave

+0

@iamdave私は最高のトップ10を最高の顧客にしたいと思いますが、もし可能であれば、2番目の写真のように各商品ごとに未払いを分割する必要があります。 – Marin

答えて

1

あなたはすべての自社製品を引き出し、その後、最初のトップ顧客を計算する必要があります。共通テーブル式でこれを行うことができます。

あなたは、これがテストされていない任意のテストデータを提供していないが、私はそれはあなたのために働くだろうと思い通り:

with top10 as 
(
    select top 10 CUSTOMER_ID 
       ,sum(S90T01_GROSS_EXPOSURE_THSD_EUR) as TOTAL_S90T01_GROSS_EXPOSURE_THSD_EUR 
    from [dbo].[DM_07MONTHLY_DATA] 
    where S90T01_CLIENT_SEGMENT = 'PI' 
      and YYYY_MM = '2017_01' 
    group by CUSTOMER_ID 
    order by TOTAL_S90T01_GROSS_EXPOSURE_THSD_EUR desc 
) 
select m.CUSTOMER_ID 
     ,m.S90T01_GROSS_EXPOSURE_THSD_EUR 
     ,m.S90T01_COGNOS_PROD_NAME 
     ,m.S90T01_DPD_C 
     ,m.PREVIOUS_BUCKET_DPD_REP 
     ,m.S90T01_BUCKET_DPD_REP 
from [dbo].[DM_07MONTHLY_DATA] m 
    join top10 t 
     on m.CUSTOMER_ID = t.CUSTOMER_ID 
order by t.TOTAL_S90T01_GROSS_EXPOSURE_THSD_EUR desc 
    ,m.S90T01_GROSS_EXPOSURE_THSD_EUR; 
+0

ご協力いただきありがとうございます。実際には、クエリに次のエラーメッセージが表示されます。無効な列名 'S90T01_GROSS_EXPOSURE_THSD_EUR'。 – Marin

+0

@Marin Ah、 'order by'の間違ったエイリアス、今すぐ試してみてください。 – iamdave

+0

sooooありがとうございます:)あなたは人生の救世主です!上記のクエリを少し編集して、特定のYEAR_MONTHの情報だけを取得できるようにしました。指定しないと、クライアントの履歴全体が表示されるためです。私から最高の安心: – Marin