2017-01-20 6 views
-2

テーブルの例と希望の結果: 以下の結果表は、実際に必要な出力です。2つのテーブルを結合し、ID、優先度、および数値で表示

1

ピボットで次のクエリを試してみました:

with pivot_data AS 
(
    select client_id 
     ,ph_type 
     ,Ph_number 
    from client_table 
    inner join phone_table 
     on client_table.phone_id = phone_table.ph_id 
) 
select * 
from pivot_data 
pivot (sum(ph_number) 
     for ph_type in ('c','w','h') 
    ); 

の検索結果を私が得た:

2

任意の助けをいただければ幸いです。 SQL Serverの回答は素晴らしいですが、oracle &正しい方向で私を指すことができれば、mysqlも歓迎です。 :)
ありがとうございます。

+6

MySQLやSQLサーバーを:あなたは絶対に一緒に、1つのCSVファイルでちょうどjoin 2つのテーブルをそれをすべて持っていると優先順位の数が増える場合は中断されません正規化された、スケーラブルなデータセットを保持する必要がある場合oracle? – Jens

+1

質問が表示されませんか?あなたはいくつかのデータを持っています - それをテキスト(またはDMLステートメントとしてより良いもの)としてフォーマットしてください - そしてクエリーと出力は何が間違っているのか、あなたが何を期待しているのかを言わないでください...あなたを助けてください? – MT0

+0

いくつのレベルの優先度がありますか?なぜあなたはその形式で結果を必要としますか?それはあなたのプレゼンテーション層でフォーマットされるのに適していませんか? – iamdave

答えて

0

Oracleのクエリ

SELECT * 
FROM (
    SELECT client_id, priority, phone_number, phone_type 
    FROM client_table c 
     LEFT OUTER JOIN 
     phone_table p 
     ON (c.phone_id = p.phone_id) 
) 
PIVOT (MAX(phone_type) AS phonetype, MAX(phone_number) AS phonenumber 
     FOR priority IN (1 AS Prio1, 2 AS Prio2, 3 AS Prio3)); 

出力:あなたは本当にset based thinkingと上のいくつかの読書を行う必要があり

CLIENT_ID PRIO1_PHONETYPE PRIO1_PHONENUMBER PRIO2_PHONETYPE PRIO2_PHONENUMBER PRIO3_PHONETYPE PRIO3_PHONENUMBER 
---------- --------------- ----------------- --------------- ----------------- --------------- ----------------- 
     1 C    9999999999  H    5555555555  W    7777777777   
+0

これは私が欲しかったものでした、多くの感謝!!私はピボットを使うべきだと思っていましたが、ちょっと緑色だったので、どうやって分かりませんでした。ありがとう:) –

0

どのようにあなたがあなたのメンテナンスに非常に有害であることになるために求めていますSSISソリューションの進化

データをそのままエクスポートするだけで済みます。

select c.client_id 
     ,c.phone_id 
     ,c.priority 
     ,p.phone_type 
     ,p.phone_number 
from @Client c 
    join @Phone p 
     on c.phone_id = p.phone_id 
関連する問題