SQL Server 2 008 строк к 1 полю CSV

Вот реализация VB.NET, эта реализация даст вам результат в КМ или Милях на основе значения Enum, которое вы передаете.

Public Enum DistanceType
    Miles
    KiloMeters
End Enum

Public Structure Position
    Public Latitude As Double
    Public Longitude As Double
End Structure

Public Class Haversine

    Public Function Distance(Pos1 As Position,
                             Pos2 As Position,
                             DistType As DistanceType) As Double

        Dim R As Double = If((DistType = DistanceType.Miles), 3960, 6371)

        Dim dLat As Double = Me.toRadian(Pos2.Latitude - Pos1.Latitude)

        Dim dLon As Double = Me.toRadian(Pos2.Longitude - Pos1.Longitude)

        Dim a As Double = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Cos(Me.toRadian(Pos1.Latitude)) * Math.Cos(Me.toRadian(Pos2.Latitude)) * Math.Sin(dLon / 2) * Math.Sin(dLon / 2)

        Dim c As Double = 2 * Math.Asin(Math.Min(1, Math.Sqrt(a)))

        Dim result As Double = R * c

        Return result

    End Function

    Private Function toRadian(val As Double) As Double

        Return (Math.PI / 180) * val

    End Function

End Class
5
задан John Saunders 17 July 2009 в 11:18
поделиться

2 ответа

попробуйте следующее:

DECLARE @x varchar(8000)

SELECT TOP 4
    @x=ISNULL(@x+', ','')+carModels
    FROM dbo.Models

SELECT @x AS carModels

ИЗМЕНИТЬ тот же ответ, что и выше, но вот полный код для его проверки ...

declare @Models table (RowID int not null primary key identity(1,1), carModels varchar(20))
insert into @Models values ('Jeep')
insert into @Models values ('Honda')
insert into @Models values ('Mitsubishi')
insert into @Models values ('Ford')
insert into @Models values ('Mazda')

DECLARE @x varchar(8000)
SET @x=null
SELECT TOP 4
    @x=ISNULL(@x+', ','')+carModels
    FROM @Models

SELECT @x AS carModels

вывод:

carModels
----------------------------------
Jeep, Honda, Mitsubishi, Ford

(1 row(s) affected)
10
ответ дан 13 December 2019 в 22:13
поделиться

Следующее может сработать. Сегодня у меня нет SQLServer для проверки.

DECLARE @Str VARCHAR(8000)
    SET @Str = SPACE(0)
    SELECT @Str = @Str + ',' + SUBSTRING(@Str + Models.Name, 1, 10)
      FROM dbo.Models
    PRINT @Str 

Это то, что вы можете сделать на клиенте? Если бы у меня был выбор, я бы, вероятно, удалил его из уровня данных и поместил на клиент, форматируя его в CSV, когда он мне нужен.

0
ответ дан 13 December 2019 в 22:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: