2016-06-26 14 views
1

TeradataでSQLを使用して顧客とそのショッピング習慣を研究しています。ケースを使用してTeradataで顧客を分類する場合

は、私は、以下の情報を持っていると言う:

Table wklytrans 
CustNm GroceryStore # WklyTrxns Sum WklyTrxns CustType 
Jack Publix  2   $70   Publix 
Ruby Kroger  1   $15   Both 
Moe  Kroger  4   $120   Kroger 
Ruby Publix  1   $20   Both 

私は次のようにそれらを分類し、新しいテーブルを作成したいと思います:

CustNm CustType # PubTrxns Sum PubTrxns # KroTrxns Sum KroTrxns 
Jack Publix 2   $70   NULL  NULL 
Ruby Both  1   $20   1   $15 
Moe  Kroger NULL  NULL   4   $120 

私は現在、実行しようとしているコードはようです次のとおりです。

CREATE MULTISET VOLATILE TABLE custclass AS(
SEL 
CustNm, 
CustType, 
CASE WHEN CustType IN 'Both' AND GroceryStore IN 'Publix' THEN # WklyTrxns 
WHEN CustType IN 'Publix' THEN # WklyTrxns 
END AS # PubTrxns, 
CASE WHEN CustType IN 'Both' AND GroceryStore IN 'Publix' THEN Sum WklyTrxns 
WHEN CustType IN 'Publix' THEN Sum WklyTrxns 
END AS Sum PubTrxns, 
CASE WHEN CustType IN 'Both' AND GroceryStore IN 'Kroger' THEN # WklyTrxns 
WHEN CustType IN 'Kroger' THEN # WklyTrxns 
END AS # KroTrxns, 
CASE WHEN CustType IN 'Both' AND GroceryStore IN 'Kroger' THEN Sum WklyTrxns 
WHEN CustType IN 'Kroger' THEN Sum WklyTrxns 
END AS Sum KroTrxns 
FROM wklytrans 
) 
WITH DATA          
PRIMARY INDEX (CustNm)       
ON COMMIT PRESERVE ROWS; 

これは現在出力されているものです:

CustNm CustType # PubTrxns Sum PubTrxns # KroTrxns Sum KroTrxns 
Jack Publix 2   $70   NULL  NULL 
Ruby Both  1   $20   NULL  NULL 
Ruby Both  NULL  NULL   1   $15 
Moe  Kroger NULL  NULL   4   $120 

Rubyのトランザクションを同じ行に結合して、私が望む出力に見えるようにするにはどうすればよいですか?

ご協力いただきましてありがとうございます。

答えて

0

は、おそらくこのようにMAX/GROUP BYを使用して複数の行を結合する必要があります。

CREATE MULTISET VOLATILE TABLE custclass AS(
SEL 

    CustNm, 
    CustType, 
    MAX(CASE WHEN CustType IN 'Both' AND GroceryStore IN 'Publix' THEN # WklyTrxns 
     WHEN CustType IN 'Publix' THEN # WklyTrxns 
     END) AS # PubTrxns, 
    MAX(CASE WHEN CustType IN 'Both' AND GroceryStore IN 'Publix' THEN Sum WklyTrxns 
     WHEN CustType IN 'Publix' THEN Sum WklyTrxns 
     END) AS Sum PubTrxns, 
    MAX(CASE WHEN CustType IN 'Both' AND GroceryStore IN 'Kroger' THEN # WklyTrxns 
     WHEN CustType IN 'Kroger' THEN # WklyTrxns 
     END) AS # KroTrxns, 
    MAX(CASE WHEN CustType IN 'Both' AND GroceryStore IN 'Kroger' THEN Sum WklyTrxns 
     WHEN CustType IN 'Kroger' THEN Sum WklyTrxns 
     END) AS Sum KroTrxns 
    FROM wklytrans 
    GROUP BY 1,2 
    ) 
WITH DATA          
PRIMARY INDEX (CustNm)       
ON COMMIT PRESERVE ROWS; 
+0

は完全に働いたこと!本当にありがとう。 –

関連する問題