这是我的openquery
SELECT *
FROM OPENQUERY(LinkedServer, 'SELECT
A.Reference,
B.Ticket, B.Localization
FROM References AS A
LEFT JOIN Tickets B ON B.Reference = A.Reference')
我需要限制每个参考有多少张票。我在本地查询中有这个号码
SELECT
Reference,
QTYBoxes
FROM
Supplies
门票数量基本上等于盒子数量。
我需要一种方法来连接两个表,并以某种方式说count(tickets)= Boxs,但是我不知道如何在打开的查询中执行此操作。
另一种选择是将数据从OpenQuery获取到临时表中,我可以在其中进行联接和限制,这很简单,问题是我为此查询了数千个结果。
这是更新的查询,我现在只需每个参考即可获得n张门票
SELECT *
FROM OPENQUERY(LinkedServer,
'SELECT
A.Reference,
B.Ticket,
B.Localization
FROM References AS A
LEFT JOIN Tickets B ON B.Reference = A.Reference') A
RIGHT JOIN Supplies B
ON A.Reference = B.Reference
// Must have n Tickets per reference = B.Boxes
编辑
我忘了添加,实际结果应该是按票证升序排列的每个引用X行
以下是预期结果的示例
Reference | Ticket | Boxes
M100 | 1 | 1
M200 | 2 | 2
M200 | 3 | 2
M300 | 5 | 3
M300 | 6 | 3
M300 | 7 | 3
答案 0 :(得分:1)
根据Microsoft
可以在查询的FROM子句中引用OPENQUERY,就像它是表名一样。
因此,您可以这样编写查询:
SELECT
S. Reference,
S. QTYBoxes
FROM OPENQUERY(LinkedServer,
'SELECT
A.Reference,
B.Ticket, B.Localization
FROM References AS A
LEFT JOIN Tickets B ON B.Reference = A.Reference')
AS C --alias your openquery result like it is just another table
INNER JOIN Supplies S ON C.Reference = S.Reference