• This uses Jeff Moden's DelimitedSplit8K function posted at http://www.sqlservercentral.com/articles/Tally+Table/72993/. If you aren't familiar with it yet, take the time to acquainted with it. It's well worth the read and will change your expectations of performance when it comes to splitting strings.

    create table test (

    version varchar(50) not null);

    insert into test(version) values('107.1055.0403.1001.110.1011');

    insert into test(version) values('108.1055.0403.0110.001.0100');

    select version,

    release = MAX(case when s.itemnumber = 1 then s.item end),

    major = MAX(case when s.itemnumber = 2 then s.item end),

    minor = MAX(case when s.itemnumber = 3 then s.item end),

    build = MAX(case when s.itemnumber = 4 then s.item end),

    service_pack = MAX(case when s.itemnumber = 5 then s.item end),

    revision = MAX(case when s.itemnumber = 6 then s.item end)

    from test

    cross apply DelimitedSplit8K(version, '.') s

    group by version;