如何查询查询结果?
我创建了查询来获取最畅销的产品。现在,我想的SerialNo或前100的产品,以便通过SellingQty ...等来查询这个结果,例如百强产品订单..如何查询查询结果?
这里是我的查询这给所有的产品订单总共订购人:
SELECT tblProducts.skuCode,tblProducts.productCode, tblProducts.productName, COUNT(tblOrders_Products.delivered) as totalOrder
FROM tblOrders_Products INNER JOIN tblProducts ON tblOrders_Products.productID = tblProducts.productID
WHERE tblProducts.productName is not null
GROUP BY tblOrders_Products.delivered, tblOrders_Products.productID, tblProducts.skuCode, tblProducts.productName,tblProducts.productCode
ORDER BY totalOrder
我认为要创建一个视图。但是很多帖子都说,使用Order By子句查看is harmful或者某个时候没有给出结果,所以我想知道如何做到这一点?
我可以通过排序DataTable
在.NET中做到这一点,并将其用作DataSource。但是如何在SQL SERVER中完成呢?
哪种方式更快?在SQL Server中订购还是在DataTable
? 我正在使用SQL SERVER 2005.
谢谢。
这应该给你由SerialNo订购的前100名产品(我认为它是tblProducts的一部分)。
您可以切换Order By参数以使其排序其他字段。
SELECT a.skuCode, a.productCode, a.productName, a.totalOrder, a.SerialNo
FROM
(
SELECT TOP 100 tblProducts.skuCode,tblProducts.productCode, tblProducts.productName, COUNT(tblOrders_Products.delivered) as totalOrder, tblProducts.SerialNo
FROM tblOrders_Products INNER JOIN tblProducts ON tblOrders_Products.productID = tblProducts.productID
WHERE tblProducts.productName is not null
GROUP BY tblOrders_Products.delivered, tblOrders_Products.productID, tblProducts.skuCode, tblProducts.productName,tblProducts.productCode
ORDER BY totalOrder) a
ORDER BY a.SerialNo
像这样的东西应该这样做:
WITH TopProducts AS
(
SELECT TOP 100 tblProducts.productID, COUNT(tblOrders_Products.delivered) as totalOrder
FROM tblOrders_Products INNER JOIN tblProducts ON tblOrders_Products.productID = tblProducts.productID
WHERE tblProducts.productName is not null
GROUP BY tblProducts.productID
ORDER BY COUNT(tblOrders_Products.delivered) DESC
)
SELECT *
FROM TopProducts INNER JOIN tblProducts ON TopProducts.productID = tblProducts.productID
ORDER BY tblProducts.SerialNo
的新产品推荐被称为SQL Server中的公共表表达式,它的重用查询零部件一种巧妙的方法。
在.NET中对DataTable进行排序也会有用。您可能不会注意到仅有100行的性能差异。在用户可能想要以不同方式对结果进行排序的情况下,在客户端排序实际上是可取的。通过单击网格中的列标题,因为这可以在没有单独的数据库调用的情况下完成。
欣赏你的答案,并向我介绍新概念。我试过,但得到“AS”附近的查询错误。我检查了一些引用,并试图将列名放在AS旁边,但仍然出现相同的错误。 – 2013-02-27 05:51:02
在你选择的staement中添加'TOP'子句,例如'SELECT TOP 100 SELECT tblProducts.skuCode,tblProducts.productCode,tblProducts.productName,.....' – 2013-02-27 03:20:58
按总订单分组将允许你检查TOP(X)或TOP(X)百分比FROM您的查询 – 2013-02-27 03:26:30
您想通过SerialNo订购还是订购通过SellingQty在您的Order By totalOrder之后?或者你只是想能够切换Order By参数? – 2013-02-27 03:29:08