要件は完全には明確ではありませんが、 c
という名前の新しい列を作成しようとしているようです 次に row_number()
関連 -- c1、c2 c3 など
.
サブクエリで次を使用する場合:
SELECT Val1, Val2, 'C'+ cast(row_number() over(Val2 で分割し、val1 で分割) as varchar(10)) colFROM TEMP1
プレ>SQL Fiddle with Demo を参照してください
結果は次のようになります:
<プレ>| VAL1 | VAL2 | COL |------------------------------------| S01 | 00731 | C1 || S02 | 00731 | C2 || S03 | 00731 | C3 || S04 | 00731 | C4 || S05 | 00731 | C5 || S06 | 00731 | C6 || S07 | 00731 | C7 || S07 | 00731 | C8 || S08 | 00731 | C9 || S09 | 00731 | C10 || S04 | 00741 | C1 || S01 | 00746 | C1 || S01 | 00770 | C1 || S01 | 00771 | C1 || S02 | 00771 | C2 |
プレ>を使用してこれに
PIVOT
したい結果のようです .次に、PIVOT
を適用します。SELECT Val2, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10FROM( SELECT Val1, Val2, 'C'+ cast(row_number() over(Val2 による分割 order by val1) as varchar(10)) col FROM TEMP1) srcPIVOT( MAX(Val1) FOR col IN (C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)) piv;
プレ>デモによる SQL Fiddle を参照してください。 .最終結果は次のとおりです。
<プレ>| VAL2 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 |------------------------------------------------ ------------------------------------------------| 00731 | S01 | S02 | S03 | S04 | S05 | S06 | S07 | S07 | S08 | S09 || 00741 | S04 | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) || 00746 | S01 | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) || 00770 | S01 | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) || 00771 | S01 | S02 | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) |
プレ>注:
ORDER BY val1
を実行しているため、私の結果は、目的の結果として要求されているものとは少し異なります。S07
の原因となる グループ化される値。要求しない限り、データベース内のデータの順序はありません。そのため、
S07
のいずれかが 値はC10
として表示されます .以下を使用して結果を取得できますが、保証はありません 結果が常に正しい順序になること:SELECT Val2, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10FROM( SELECT Val1, Val2, 'C'+ cast(row_number() over(Val2 による分割 order by (1)) as varchar(10)) col FROM TEMP1) srcPIVOT( MAX(Val1) FOR col IN (C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)) piv;コード> プレ>
デモによる SQL Fiddle を参照してください .
<プレ>order by (select 1)
の使用 データの順序を変更しますが、常にその順序になることを保証するものではありません。結果は次のとおりです。| VAL2 | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 |------------------------------------------------ ------------------------------------------------| 00731 | S01 | S02 | S03 | S04 | S05 | S06 | S07 | S08 | S09 | S07 || 00741 | S04 | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) || 00746 | S01 | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) || 00770 | S01 | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) || 00771 | S01 | S02 | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) | (ヌル) |
プレ>