2011-09-15 6 views
0

値:SQL GROUP BYと値とNON UNIQUEは、これは私のSQLである

SELECT * 
FROM (
    SELECT DISTINCT real_dep_date, 
      real_price, 
      resort_name, 
      season_id, 
      min_occ, 
      free_sell, 
      MIN(real_price) OVER (PARTITION BY resort_name,real_dep_date) AS min_price 
    FROM deals_panel_view 
    WHERE ([1pax_disc] = [1pax_disc]) 
    AND (real_dep_date >= season_start) 
    AND (season_name = 'winter 2012') 
    AND (chalet_url <> '') 
    AND (real_price <> 0) 
    AND (real_dep_date <= season_end) 
    AND (combined_chalet = 0) 
    AND (availability_spaces <> 0) 
) deals_panel_view 
WHERE min_price = real_price 

これは動作しますが、何が起こるかは、私は特定のリゾート地のための3件の結果を得ることです。これはまったく同じ3つのシャレーがあるためです。

私は1つだけを表示したいので、私は限界を使うと思うが、私はどこを知らない。

私はSQL Server 2005の

を使用していますすべてのヘルプは素晴らしいことです。

+0

はたぶん3つのシャレーは*正確に*同じではありません。そうであれば、DISTINCTは重複を排除しました。いくつかの属性や属性が異なるかもしれません(あなたが選択しているもののいくつかは明らかです)。 –

答えて

0

これを試してみてください...

Select real_dep_date, 
     real_price, 
     resort_name, 
     season_id,    
     min_occ, 
     free_sell, 
     min_price FROM (SELECT ROW_NUMBER() over (PARTITION BY resort_name,real_dep_date ORDER BY resort_name) as ROW,* 
FROM (  
    SELECT DISTINCT real_dep_date, 
      real_price, 
      resort_name, 
      season_id,    
      min_occ, 
      free_sell, 
      MIN(real_price) OVER (PARTITION BY resort_name,real_dep_date) AS min_price  
    FROM deals_panel_view  
    WHERE ([1pax_disc] = [1pax_disc])  
     AND (real_dep_date >= season_start)  
     AND (season_name = 'winter 2012')  
     AND (chalet_url <> '')  
     AND (real_price <> 0)  
     AND (real_dep_date <= season_end)  
     AND (combined_chalet = 0)  
     AND (availability_spaces <> 0) 
    ) deals_panel_view 
    WHERE min_price = real_price 
) Temp 
where Row = 1 
+0

書式設定の問題と思われる – richard

+0

Microsoft OLE DBプロバイダSQL Serverエラー '80040e14' 'PARTITION'の近くに構文が正しくありません。 – richard

+0

キーワード「BY」の近くの構文が正しくありません。私は今カンマを逃していた – richard