2017-08-29 9 views
-1

次の要件のための単純なSQLスクリプトが必要です。また、将来的にデータが増加する可能性があり、静的ではありません。だから私は動的なクエリが必要です。誰かがこれで私を助けてください。すべての子値を、1つの行に、親IDが同じで区切って表示

私はこの

input

のようなデータを持っており、出力は次のようにする必要があります。

output

+1

MSSQLサーバーにスタッフを()を使用して、これを試してみてMySQLとSQL Serverは非常に異なる方法で、この特定の問題を解決する非常に異なるデータベースエンジンです。あなたはどちらを使っていますか?また、テキストではなく、サンプルデータと出力のリンクや画像を投稿するのは非常に失礼だと考えられます。誰もあなたの画像を見ることができないので、答えが出にくくなります。最後に、あなたがやって欲しいのは、リレーショナルデータベースの貧弱な習慣とみなされます。リレーショナルデータベースはレコードを扱う。アプリケーションは、必要なときにcsvデータをロールアップできます。 –

+0

ヘイジョエル、あなたの返事をありがとう。まず私はSQLを使用しています。私はSQLコードが必要です。イメージを登録すると、私はここに質問を投稿するのがかなり新しいです。データを表形式で表示する方法がわかりません。それで私はイメージを使用しました。 – Akhil

+0

** ** Sql? 2つ以上の方言があり、あなたの質問に対する答えは、必要な方言に大きく依存します(My SQLはSql Server 2008以降でStuff()を使用できる間にgroup_concat()を使用します)。データのために...あなたのベストを尽くしてください。フォーマットを編集する手助けができますが、イメージはこのコンテキストでは常に**悪化します。 –

答えて

0

;With cte(ParentId, ChidId) 
    AS 
    (
    SELECT 1,'a'  UNION ALL 
    SELECT 1,'b'  UNION ALL 
    SELECT 1,'123' UNION ALL 
    SELECT 2,'asd' UNION ALL 
    SELECT 2,'222' UNION ALL 
    SELECT 3,'kk' UNION ALL 
    SELECT 3,'ffh' UNION ALL 
    SELECT 4,'aaa' UNION ALL 
    SELECT 5,'fdhgf' UNION ALL 
    SELECT 5,'fdddv' 
    ) 
    SELECT parentid, 
      Stuff((SELECT DISTINCT ', ' + chidid 
        FROM cte i 
        WHERE i.parentid = o.parentid 
        FOR xml path ('')), 1, 1, '') AS ChidId 
    FROM cte o 
    GROUP BY parentid 
+0

返信@ Srini131ありがとうございます。しかし、私のデータは動的です。 – Akhil

+0

物理テーブルにデータを保存しましたか?もしそうであればCteをあなたの物理的なテーブル名に置き換えてください。 –

+0

Thanks @ Srini131。とった – Akhil

関連する問題