0

csvファイルにある自転車の測定値について次の表があり、SQLServerデータベースの表に転置してインポートしたいと考えています。

Size             XS S   M   L   XL
Frame Reach 365mm   385mm   405mm   425mm   445mm
Frame Stack 495mm   515mm   540mm   565mm   590mm
Stem Length 90mm    90mm    90mm    90mm    90mm
Seat Tube Length    505mm   525mm   551mm   577mm   603mm
Top Tube Length 481mm   504mm   530mm   557mm   582mm
B-B Drop             72mm   72mm    72mm    72mm    72mm
Chain-Stay Length   395mm   395mm   395mm   395mm   395mm
Seat-Tube Angle 77° 77° 77° 77° 77°
Head-Tube Angle 70.25°  71.5°   72° 72.5°   72.5°
Fork Rake            50mm   50mm    45mm    45mm    45mm
Trail            69mm   61mm    63mm    60mm    60mm
Front-Center    573mm   589mm   608mm   631mm   659mm
Wheelbase            957mm  973mm   992mm   1016mm  1043mm
Stand-Over Height   752mm   772mm   797mm   822mm   847mm
Head-Tube Length    99mm    115mm   139mm   163mm   189mm
Seat Post Setback   12.5mm  12.5mm  12.5mm  12.5mm  12.5mm
Seat-Post Length    350mm   350mm   350mm   350mm   350mm
Crank Length    167.5mm 170mm   172.5mm 172.5mm 175mm

したがって、上記の表では、次のように表示する必要があります。

Size    Frame Reach Frame Stack Stem Length -18° Horizonta  Seat Tube Length    Top Tube Length B-B Drop    Chain-Stay Length   Seat-Tube Angle Head-Tube Angle Fork Rake   Trail   Front-Center    Wheelbase   Stand-Over Height   Head-Tube Length    Seat Post Setback   Seat-Post Length    Crank Length
XS  365mm   495mm   90mm    505mm   481mm   72mm    395mm   77° 70.25°  50mm    69mm    573mm   957mm   752mm   99mm    12.5mm  350mm   167.5mm
S   385mm   515mm   90mm    525mm   504mm   72mm    395mm   77° 71.5°   50mm    61mm    589mm   973mm   772mm   115mm   12.5mm  350mm   170mm
M   405mm   540mm   90mm    551mm   530mm   72mm    395mm   77° 72° 45mm    63mm    608mm   992mm   797mm   139mm   12.5mm  350mm   172.5mm
L   425mm   565mm   90mm    577mm   557mm   72mm    395mm   77° 72.5°   45mm    60mm    631mm   1016mm  822mm   163mm   12.5mm  350mm   172.5mm
XL  445mm   590mm   90mm    603mm   582mm   72mm    395mm   77° 72.5°   45mm    60mm    659mm   1043mm  847mm   189mm   12.5mm  350mm   175mm
XL

このフォーラムでピボット/アンピボット機能を見つけましたが、うまく機能させることができませんでした。最初にcsvを一時テーブルにインポートし、データから「mm」と「°」を削除したことに注意してください。

どんな助けでも大歓迎です。

4

1 に答える 1

1

1 回限りの解決策として、csv ファイルを Excel で開き、そこで転置を実行することをお勧めします。

本当に T-SQL を使用して実行したい場合は、最初にデータを UNPIVOT し、次に PIVOT して転置レイアウトに戻す必要がありますが、これはデータ列で同じデータ型を使用する場合にのみ機能します ("フロート」など)。一時テーブルが「Temp」と呼ばれ、「Dimension」、「XS」、「S」、「M」、「L」、および「XL」の列があるとします。

アンピボット:

SELECT Dimension, Size, Value
FROM Temp
UNPIVOT (Value FOR Size IN (XS, S, M, L, XL)) AS unpvt;

この出力を新しい一時テーブル (temp2) に入れ、PIVOT を次のように使用します。

SELECT Size, FrameReach, FrameStack, StemLength, SeatTubeLength, [...]
FROM Temp2
PIVOT (
    MAX(Value) FOR Dimension IN ('Frame Reach', 'Frame Stack', 'Stem Length', 'Seat Tube Length', [...])
    ) AS Pvt
于 2013-01-28T16:20:17.593 に答える