我正在使用T-SQL 2014并尝试按其价格订购产品。现在问题在于:价格是计算字段。例如。我创建了一个函数来评估一些定价规则(可能大约有4个表,每个表约4,000,000条记录与JOIN相结合以适应当前登录)并返回产品的用户价格。虽然如果我只是想为有限数量的产品返回价格,这是可以的,但如果我想按此排序,那就慢了。
我正在考虑使用像UserProductPrice这样的附加表,它将在后台计算,但显然并不总是具有正确的价格,因为规则等可能会在计算之间发生变化。
关于如何按价格排序的任何建议都将非常受欢迎。
答案 0 :(得分:0)
您可以使用ROW_NUMBER()函数并将其放入临时表:
SELECT
Product,
dbo.ufnPrice(Price) as Price,
ROW_NUMBER() OVER (PARTITION BY Product ORDER BY dbo.ufnPrice(Price) DESC) AS Ranking
INTO #Products
FROM dbo.Products
SELECT
Product,
Price,
FROM #Products
WHERE Ranking = 1
DROP TABLE #Products
应该给你你需要的东西。