Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Apr 29th, 2012  |  syntax: None  |  size: 1.61 KB  |  hits: 15  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Get first row for one group [closed]
  2. GV |   Class|  SUM
  3. GV1|   L001 |  5000
  4. GV1|   L002 |  5000
  5. GV1|   L003 |  5000
  6. GV2|   L002 |  7000
  7. GV2|   L003 |  7000
  8. GV2|   L001 |  7000
  9. GV3|   L001 |  8000
  10. GV3|   L002 |  8000
  11. GV3|   L003 |  8000
  12.        
  13. select teacherid
  14.     from mytable
  15. group by teacherid;
  16.        
  17. select teacherid, ...other cols...
  18.     from (select teacherid, ...other cols...
  19.                  row_number() over (
  20.                      partition by teacherid
  21.                      order by classid /* or class as per edit */) as row_num
  22.             from mytable) my_derived_table
  23.    where my_derived_table.row_num = 1;
  24.        
  25. WITH T AS (
  26.     SELECT yourTable.*, ROW_NUMBER() OVER(PARTITION BY TeacherID
  27.       ORDER BY ClassID) AS RN
  28.     FROM yourTable
  29. )
  30. SELECT *
  31. FROM T
  32. WHERE RN = 1
  33.        
  34. create table #t
  35. (
  36.     GV  varchar(4),
  37.     Class varchar(4),
  38.     [SUM] int
  39. )
  40.        
  41. insert into #t(GV, Class, [SUM])values('GV1', 'L001', 5000)
  42. insert into #t(GV, Class, [SUM])values('GV1', 'L002', 5000)
  43. insert into #t(GV, Class, [SUM])values('GV1', 'L003', 5000)
  44. insert into #t(GV, Class, [SUM])values('GV2', 'L002', 7000)
  45. insert into #t(GV, Class, [SUM])values('GV2', 'L003', 7000)
  46. insert into #t(GV, Class, [SUM])values('GV2', 'L001', 7000)
  47. insert into #t(GV, Class, [SUM])values('GV3', 'L001', 8000)
  48. insert into #t(GV, Class, [SUM])values('GV3', 'L002', 8000)
  49. insert into #t(GV, Class, [SUM])values('GV3', 'L003', 8000)
  50.        
  51. Select GV, class, [sum] from
  52. (
  53.     Select Row_Number() Over(Partition by GV Order by GV ) as RowId, * from #t
  54. )K
  55. Where RowId = 1
  56.  
  57. drop table #t
  58.        
  59. GV   class sum
  60. ---- ----- ----
  61. GV1  L001  5000
  62. GV2  L002  7000
  63. GV3  L001  8000