3

次のようなカンマ区切りの文字列があります。

key1=value1,key2=value2,key3=value3,key1=value1.1,key2=value2.1,key3=value3.1

それを次のようなテーブルに解析したいと思います。

Key1       Key2       Key3
==============================
value1     value2     value3
value1.1   value2.1   value3.1

文字列を行に分割できます。

ID      Data
================
1       key1=value1
2       key2=value2
3       key3=value3
...

しかし、私はそこで立ち往生し、残りを行う方法を理解できないようです. どんな助けでも大歓迎です。

4

4 に答える 4

0

これは、連続した ID に依存しない、より一般的なバージョンです。ただし、明確ではないのはvalue1、最終結果で , ではなく,value2が互いに関連しているということです。このソリューションでは、特定のキーが出現するたびに任意に順序付けを行いました。value1value2.1

With SplitKeyValuePairs As
    (
    Select Id
        , Left([Data], CharIndex('=', [Data]) - 1) As KeyName
        , Substring([Data], CharIndex('=', [Data]) + 1, Len([Data])) As Value
        , Row_Number() Over ( Partition By Left([Data], CharIndex('=', [Data]) - 1) Order By Id ) As RowNum
    From SplitDelimitedString
    )
Select Max ( Case When KeyName = 'Key1' Then Value End ) As [Key1]
    , Max ( Case When KeyName = 'Key2' Then Value End ) As [Key2]
    , Max ( Case When KeyName = 'Key3' Then Value End ) As [Key3]
From SplitKeyValuePairs
Group By RowNum

SQL フィドルのバージョン

于 2013-05-22T21:33:57.497 に答える