【问题标题】:Order - OrderDetail Getting a resultset without using CursorOrder - OrderDetail 在不使用光标的情况下获取结果集
【发布时间】:2013-02-01 09:56:55
【问题描述】:

我有一个类似于下面的基本架构

OrderTable
Id int

1
2

OrderDetailTable
Id int - OrderId int

1        1
2        1
3        1
4        1
5        2
6        2
7        2

我想要一张桌子是

OrderOrderDetailCombinationTable
Order int - OrderDetails varchar(100)

例子

Order - OrderDetails
1       1,2,3,4
2       5,6,7

http://www.sqlfiddle.com/#!3/c617b/2

我可以通过使用游标来获得这个结果,但是据我所知,游标会降低性能,那么有什么更好的方法来获得这个结果?

【问题讨论】:

    标签: sql sql-server database


    【解决方案1】:

    查询:

    SQLFIDDLEEXample

    SELECT o.orderid AS [Order],
        STUFF((   SELECT ',' +CAST( x.id as varchar(2) )
            FROM orderdetail x
            WHERE o.orderid = x.orderid
            FOR XML PATH ('')
        ),1,1,'') as OrderDetails
    FROM [orderdetail] o
    INNER JOIN [order] oo
    ON oo.id = o.orderid
    GROUP BY o.orderid
    

    结果:

    | ORDER | ORDERDETAILS |
    ------------------------
    |     1 |      1,2,3,4 |
    |     2 |        5,6,7 |
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多