我正在尝试创建一个查询,该查询返回结果集中子查询的结果。
这是我正在使用的表格:
Orders OrderDetails
------- -----------
orderId orderDetailId
(other data) orderId
productName
我想获取每个订单的前两个订单详细信息(大多数订单只有一个或两个详细信息)。这是所需结果集的示例:
orderId (other order data) productName1 productName2
------- ------------------ ------------ ------------
1 (other order data) apple grape
2 (other order data) orange banana
3 (other order data) apple orange
这是我到目前为止所尝试的:
SELECT o.orderid,
Max(CASE WHEN detail = 1 THEN oi.productname END) AS ProductName1,
Max(CASE WHEN detail = 2 THEN oi.productname END) AS ProductName2
FROM orders AS o
OUTER apply (SELECT TOP 2 oi.*,
Row_number() OVER (ORDER BY orderdetailid) AS detail
FROM orderdetails AS oi
WHERE oi.orderid = o.orderid) AS oi
GROUP BY o.orderid
我在托管电子商务解决方案的自定义报告模块中执行此操作,并收到以下无用的语法错误:SQL 错误:'(' 附近的语法不正确。
不幸的是,我不知道我使用的是什么版本的 SQL Server。客户支持一无所知,选择@@Version 不起作用。
请注意,即使错误消息按名称引用该函数,似乎也没有正确支持 row_number() 函数。
谢谢您的帮助!