SQL 服务器:将行转换为一行

SQL Server : convert rows to one row

我知道 SQL 服务器枢轴,但这次我想我需要一些比简单的枢轴值更复杂的东西。

Here it is an SQL fiddle example.

所以我有一个 table 一个起始城市 - 结束城市组合最多 3 行。

在一个查询中,我需要在一行中获取这些组合,而我只需要这些组合,其中有 3 行。

请指教,

您可以像这样将其用作交叉表。

with NumberedValues as
(
    SELECT EndCity
        , StartDate
        , EndDate
        , Price
        , ROW_NUMBER() OVER(PARTITION BY StartCity, EndCIty ORDER BY StartDate) as RowNum
    FROM [dbo].[BestPrice]
)
SELECT EndCity,
    max(CASE WHEN RowNum = 1 THEN StartDate END) as StartDate1,
    max(CASE WHEN RowNum = 1 THEN Enddate END) as EndDate1,
    max(CASE WHEN RowNum = 1 THEN Price END) as Price1,
    max(CASE WHEN RowNum = 2 THEN StartDate END) as StartDate2,
    max(CASE WHEN RowNum = 2 THEN Enddate END) as EndDate2,
    max(CASE WHEN RowNum = 2 THEN Price END) as Price2,
    max(CASE WHEN RowNum = 3 THEN StartDate END) as StartDate3,
    max(CASE WHEN RowNum = 3 THEN Enddate END) as EndDate3,
    max(CASE WHEN RowNum = 3 THEN Price END) as Price3
FROM NumberedValues
group by EndCity