使用Order by和Group by的SQL联接
嗨,我正在尝试从另一个Excel工作簿加入Excel 第一个表中的主键是Part_No。这不是主键,因此无法进行1对1联接 我想从匹配LIKE和notlike关键字的结果中选择最佳订单状态 WHERE语句工作正常,但第一个语句似乎与ORDER BY不匹配,结果是随机的。有时我会收到“取消”的订单——当同一零件的订单在库存中时。当只在库存中首先执行内部选择时,我看到了两行 我正在使用excelvba中的ADODB连接使用使用Order by和Group by的SQL联接,sql,excel,ms-access-2007,vba,Sql,Excel,Ms Access 2007,Vba,嗨,我正在尝试从另一个Excel工作簿加入Excel 第一个表中的主键是Part_No。这不是主键,因此无法进行1对1联接 我想从匹配LIKE和notlike关键字的结果中选择最佳订单状态 WHERE语句工作正常,但第一个语句似乎与ORDER BY不匹配,结果是随机的。有时我会收到“取消”的订单——当同一零件的订单在库存中时。当只在库存中首先执行内部选择时,我看到了两行 我正在使用excelvba中的ADODB连接使用Provider=Microsoft.ACE.OLEDB.12.0 怎么了?谢
Provider=Microsoft.ACE.OLEDB.12.0
怎么了?谢谢你的帮助
SELECT
FIRST(o.Part_No),
FIRST(o.Order_Desc),
FIRST(o.Order_Status)
FROM
Parts
LEFT JOIN
(
SELECT *
FROM Orders
WHERE
Orders.Order_Desc Like '%keyword%' AND
Orders.Order_Desc Not Like '%otherkeyword%'
ORDER BY
IIF(Orders.Order_Status = 'In Stock' , 1,
IIF(Orders.Order_Status = 'In Transit' , 2,
IIF(Orders.Order_Status = 'Ordered' , 3,
IIF(Orders.Order_Status = 'Canceled' , 4)))) ASC
) AS o
ON Parts.Part_No = o.Part_No
GROUP BY Parts.Part_No;
这里有一个例子
List Parts
Part No
1
2
List Orders
Part No Order_Desc Order_Status
1 keyword In Stock
1 keyword Canceled
2 keyword Ordered
2 not keyword In Stock
2 keyword Canceled
3 keyword Ordered
3 keyword In Stock
3 keyword In Stock
5 not keyword In Stock
What i get
1 keyword Canceled (seems Random right or wrong)
2 keyword Ordered
Desired Result
1 keyword In Stock
2 keyword Ordered
希望这个例子有帮助!
我是新来这里发帖子的。很抱歉出现了奇怪的表格请尝试以下操作:
SELECT
COUNT(o.Part_No),
FIRST(o.Part_No),
FIRST(o.Order_Status),
FIRST(o.Order_No),
FIRST(o.Order_Desc),
IIF(Orders.Order_Status = 'In Stock' , 1,
IIF(Orders.Order_Status = 'In Transit' , 2,
IIF(Orders.Order_Status = 'Ordered' , 3,
4))) AS Order_Status_OrderBy
FROM
Parts
LEFT JOIN
(
SELECT *
FROM Orders
WHERE
Orders.Order_Desc Like '%keyword%' AND
Orders.Order_Desc Not Like '%otherkeyword%'
ORDER BY
Order_Status_OrderBy
) AS o
ON Parts.Part_No = o.Part_No
GROUP BY Parts.Part_No;
这不起作用。我需要在内部Select中执行Order by,否则我会得到“您试图执行的查询未将指定表达式“Order\u Status\u OrderBy”作为聚合函数的一部分。请将Order\u Status\u OrderBy添加到组by,这将在某些结果中产生多行,每个Order\u Status\u OrderBy对应一行。但行仍然是按正确的顺序写入的,因此按顺序进行操作。只是第一个似乎不起作用。我误解了你的问题。也许你可以用一些数据的例子来解释,这样我就知道你想要什么了。