Взятие максимума столбца на основе определенных критериев - PullRequest
0 голосов
/ 22 марта 2012

Нужна ваша помощь, чтобы получить максимум CAP_PRICE на основе определенных критериев в выражении выбора sql:

IF sid_rnk =0 and prd_id_rnk =1 and cap_price <> 0 
   then Max(cap_price) group by (sid_rnk,prd_rnk) as CAP1

Else if sid_rnk =0 and prd_id_rnk =2 and cap_price <> 0  and cap1 = 0
   then Max(cap_price) group by (sid_rnk,prd_rnk) as cap2

Else if sid_rnk =0 and prd_id_rnk =3 and cap_price <> 0 and cap2 = 0
   then Max(cap_price) group by (sid_rnk,prd_rnk) as cap3

Else if sid_rnk =1 and prd_id_rnk =1 and cap_price <> 0 and cap3 = 0
   then Max(cap_price) group by (sid_rnk,prd_rnk) as cap4

Else if sid_rnk =1 and prd_id_rnk =2 and cap_price <> 0 and cap4 = 0
   then Max(cap_price) group by (sid_rnk,prd_rnk) as cap5

Else if sid_rnk =1 and prd_id_rnk =3 and cap_price <> 0 and cap5 = 0
   then Max(cap_price) group by (sid_rnk,prd_rnk)

Пример данных:

CREATE TABLE sap_prod
(
prd_id_rnk int,
sld_to_rnk int,
CAP_geo_1 varchar(20),
F_I_geo_2 varchar(20),
CAP_price int
)


INSERT INTO sap_prod     
       ( prd_id_rnk, sld_to_rnk, CAP_geo_1, F_I_geo_2, CAP_price ) 
SELECT      1,0,'ASMO','ASMO',0   UNION ALL
SELECT      1,0,'ASMO','ASMO',0   UNION ALL 
SELECT      1,0,'ASMO','ASMO',0   UNION ALL 
SELECT      2,0,'WW'  ,'ASMO',0   UNION ALL 
SELECT      2,0,'WW'  ,'ASMO',0   UNION ALL 
SELECT      2,0,'WW'  ,'ASMO',0   UNION ALL 
SELECT      3,0,'EMEA','ASMO',0   UNION ALL 
SELECT      3,0,'EMEA','ASMO',0   UNION ALL 
SELECT      3,0,'IJKK','ASMO',0   UNION ALL 
SELECT      3,0,'IJKK','ASMO',0   UNION ALL
SELECT      1,1,'ASMO','ASMO',0   UNION ALL
SELECT      1,1,'ASMO','ASMO',0   UNION ALL 
SELECT      1,1,'ASMO','ASMO',0   UNION ALL 
SELECT      2,1,'WW'  ,'ASMO',0   UNION ALL 
SELECT      2,1,'WW'  ,'ASMO',0   UNION ALL 
SELECT      2,1,'WW'  ,'ASMO',0   UNION ALL 
SELECT      3,1,'EMEA','ASMO',35  UNION ALL 
SELECT      3,1,'EMEA','ASMO',40  UNION ALL 
SELECT      3,1,'IJKK','ASMO',70  UNION ALL 
SELECT      3,1,'IJKK','ASMO',50   

Результат должен быть: 70

1 Ответ

2 голосов
/ 22 марта 2012

Не уверен, но я думаю, вам нужно это:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...