本文介绍了Order - OrderDetail在不使用Cursor的情况下获取结果集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个如下的基本模式

I have a basic schema that is something like below

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


$ b b

我可以通过使用光标获得这个结果,但是游标的性能会受到影响,因为我知道什么是更好的方法来获得这个结果? p>

I can get this result by using cursor but cursor has a performance penalty as I know so what can be the better way to get this result ?

推荐答案

查询:

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 |

这篇关于Order - OrderDetail在不使用Cursor的情况下获取结果集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-05 09:04