SQL GROUP BY И ЗНАЧЕНИЕ И НЕ УНИКАЛЬНЫЕ ЗНАЧЕНИЯ - PullRequest
0 голосов
/ 15 сентября 2011

Это мой 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 одинаковых шале.

Я хочу показать только один, так что, думаю, я бы использовал ограничение, но не знаю где.

Я использую SQL Server 2005.

Любойпомощь была бы отличной.

1 Ответ

0 голосов
/ 15 сентября 2011

Попробуйте с этим ...

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...