2017-08-03 12 views
0

私は、私たちの学校の対応するコースに結びついている別の学校のコースを持つテーブルを持っています。それは私が取得しようとしている複数の行を1つにまとめる

schoolcode | subj | crsenum | oursubj | ourcrsenum 
------------------------------------------------------ 
1234  | Art | 100  | VisArt |  200 
1234  | Art | 100  | VisArt |  201 

結果が

schoolcode | subj | crsnum | oursubj1 | ourcrsnum1 | oursubj2 | ourcrsnum2 
-------------------------------------------------------------------------------- 
1234  | Art | 100  | VisArt  | 200  | VisArt | 201 
です例えば、私は転送する学校の課程 に基づいて1本のライン上のすべてを、それをラインアップしようとしている多くのリレーションシップ に一つです

私がまだ試したことは、転送スクールのコースごとに2本の行を与えます テーブルには、各コースに対応するシーケンス番号もありますが、1つの着信コースに添付されています 助けてくれれば大いに感謝します! おかげ

私が謝罪... 私は、これは私はちょうどそれを選択し、キーがschoolcodeで1行にそれを平らにしようとしている一つのテーブルからの情報では、oracle /のsqldeveloper で働いています| subj | crsenum その行に、その1つのコースに関連付けられているすべてのコースを追加します。 2つ以上ある場合は、同じ行に追加したい たとえば学校の場合1234 subj Art crsenum 100コースもあります私たちの学校で200を描く - 私に教えてください -

1234  | Art | 100 | VisArt | 200 | VisArt | 201 | Drawing | 200 

私は、これはあなたが作業しているどのようなRDBMS今まで私の最初の質問

+1

であることが意味 を作る願っていますか? 2行以上あるとどうなりますか? –

+0

あなたはどのようなクエリを使用していますか? 2つの行があると言うと、 'ourcrsnum1'と' ourcrsnum2'は同じですが、値が入れ替えられていますか? – TallChuck

+0

ああ、私はあなたがやろうとしていることを見ていると思います。一致するすべてのコースを1列にまとめて欲しいですか?たとえば、 'cssen 'が100のすべてのコースは、' oursubj'と 'ourcrsenum'の任意の数を行の数に応じて持っていますか? (私の言葉が非常に明確かどうかわかりません) – TallChuck

答えて

0
DECLARE @sql VARCHAR(MAX) 
DECLARE @tbl VARCHAR(100) 

SET @tbl = 'courses' -- put your table name here 

SET @sql = 'SELECT schoolcode, subj, crsenum, ' 

SELECT @sql = @sql + ''''+ oursubj + '''' + ' AS oursubj' + CAST(ROW_NUMBER() OVER (ORDER BY ourcrsenum) AS VARCHAR) + ', ' + CAST(ourcrsenum AS VARCHAR) + ' AS crsenum' + CAST(ROW_NUMBER() OVER (ORDER BY ourcrsenum) AS VARCHAR) + ', ' 
    FROM courses 

SET @sql = LEFT(@sql, LEN(@sql) - 1) 

SET @sql = @sql + ' FROM ' + @tbl + ' GROUP BY schoolcode, subj, crsenum' 

EXEC(@sql) 

結果

schoolcode | subj | crsenum | oursubj1 | crsenum1 | oursubj2 | crsenum2 
1234  | Art | 100  | VisArt | 200  | VisArt | 201 
関連する問題