2013-12-11 77 views
-1

在搜索頁面上工作。我的搜索結果正在運行,但我也需要提供過濾器選項。其中一個選擇是一組產品數量的價格象限。因此,基本上在結果​​集中,我必須獲得最低價格和最高價格,然後同樣將其分成4個分組,然後將這些分組返回給每個分組。搜索結果的返回篩選器象限

所以我們退回了49個產品,最低價格的產品是10美元,最高價格的產品是110美元。我必須爲每一組我們要過濾的搜索結果重新計算這個值,所以我不能硬編碼底限值和上限值。

所以它看起來像這樣,括號中的數字是數值落入該象限內的返回產品的數量。

$10.00 to $35.00 (2) 
$35.01 to $60.00 (12) 
$60.01 to $85.00 (0) 
$85.01 to $110.00 (35) 

我想這樣做是一個SELECT語句,因爲我們要運行它從搜索結果臨時表,如果用戶需要它。

我一直打磚牆試圖寫這個,似乎無法走得很遠。

+2

在所有的可能性,人們希望看到你之前做的嘗試他們急於爲您編寫代碼。 –

+0

如果您提供了詳細信息,例如涉及的表格模式,不起作用的示例查詢等,將會有所幫助。 –

回答

0

我無法讓它在單個語句中工作,但我能夠得到它的工作。我們創建了一個名爲[編號],我使用Numbers表格...

DECLARE @priceFloor money; DECLARE @priceCeiling money; DECLARE @priceRange int; 
SELECT @PriceFloor = FLOOR(MIN(price)) , @PriceCeiling = CEILING(Max(price)), 
    @PriceRange = CEILING(Max(price))/4 
FROM #TempSearchResults; 

WITH priceFilterCTE AS 
(   
    SELECT Number * @PriceRange AS FromPrice, (Number * @PriceRange) + @PriceRange -.01 AS ToPrice   
    FROM Numbers 
    WHERE Number BETWEEN 0 AND 3 
) 

SELECT CAST(FromPrice AS VARCHAR(20)) + ' to ' + CAST(ToPrice AS VARCHAR(20)) AS Price, 
    (
     SELECT COUNT(1) 
     FROM #TempSearchResults 
     WHERE price BETWEEN priceFilterCTE.FromPrice AND priceFilterCTE.ToPrice 
    ) AS [COUNT] 
FROM priceFilterCTE 

返回貌似....

PRICE    COUNT 
0 to 798.99  949 
799 to 1597.99 162 
1598 to 2396.99 32 
2397 to 3195.99 7