3

请帮帮我。
我在 mysql 中的表如下所示:

kd_mapel|Sem1 |Sem2 |Sem3
EKO-001 |79 |NULL |NULL
EKO-002 |空 |80 |空
FIS-001 |77 |NULL |NULL
FIS-002 |空 |76 |空
FIS-201 |空 |空 |81
GEO-001 |79 |NULL |NULL
INA-001 |79 |NULL |NULL
INA-002 |空 |80 |空
INA-003 |空 |空 |79
ING-001 |77 |NULL |NULL
ING-002 |空 |79 |空
ING-003 |NULL |NULL |80


预期结果是:

kd_mapel|Sem1 |Sem2 |Sem3
EKO |79 |80 |NULL
FIS |77 |76 |81
GEO |79 |NULL |NULL
INA |79 |80 |79
荷兰国际集团 |77 |79 |80

是否可以将 mysql 代码用于这些结果?如何?
谢谢你。

4

2 回答 2

4

试试这个查询

select substring(kd_mapel, 1, locate("-", kd_mapel)-1) as kd, 
max(sem1), max(sem2), max(sem3)
from tbl
group by kd

小提琴

|  KD | MAX(SEM1) | MAX(SEM2) | MAX(SEM3) |
-------------------------------------------
| EKO |        79 |        80 |    (null) |
| FIS |        77 |        76 |        81 |
| GEO |        79 |    (null) |    (null) |
| INA |        79 |        80 |        79 |
| ING |        77 |        79 |        80 |

如果您有多个 kd_mapel 的 sem 记录,您甚至可以使用 sum 函数。

于 2013-05-31T04:20:21.180 回答
2

尝试

SELECT LEFT(kd_mapel, 3) kd_mapel, 
       MIN(Sem1) Semi1, 
       MIN(Sem2) Semi2, 
       MIN(Sem3) Semi3
  FROM table1
 GROUP BY LEFT(kd_mapel, 3)

输出:

| KD_MAPEL | SEMI1 |  SEMI2 |  SEMI3 |
--------------------------------------
|      EKO |    79 |     80 | (null) |
|      FIS |    77 |     76 |     81 |
|      GEO |    79 | (null) | (null) |
|      INA |    79 |     80 |     79 |
|      ING |    77 |     79 |     80 |

SQLFiddle

于 2013-05-31T04:20:41.640 回答