2012-10-11 71 views
0

SELECT * FROM title给我下面的输出:GROUP BY与订货

title_number version_type hd_sd 
1000046   Standard SD 
1000046   Standard HD 
1000050   Standard SD 
1000093   Standard SD 
1000093   Standard HD 
1000125   Standard SD 
1000269   Standard SD 

我需要得到所有不同title_numbers然后hd_sd将= HD如果存在,否则,它将= SD。正确的输出为:

title_number version_type hd_sd 
1000046   Standard HD 
1000050   Standard SD 
1000093   Standard HD 
1000125   Standard SD 
1000269   Standard SD 

我得到这个最接近的是SELECT * FROM title GROUP BY title_number,但是这并没有给我正确的hd_sd列值。我将如何正确地执行此查询?

回答

2
SELECT title_NUMBer, Version_type, 
     MIN(hd_sd) 
FROM tableName 
GROUP BY title_NUMBer 

改进,

SELECT a.* 
FROM tableName a 
     INNER JOIN 
     (
      SELECT title_NUMBer, MIN(hd_sd) minCol 
      FROM tableName 
      GROUP BY title_NUMBer 
     ) b ON a.title_number = b.title_Number AND 
       a.hd_sd = b.mincol 
+0

非常简单的,感谢您的帮助! – David542

+0

@ David542第一个查询没有提供正确的细节,特别是处理更多的列。更新的一个给出正确的结果。 :) –