我在mysql中有这个表:
id | orden | pacient | per| exam | value | condition | date
---+---------------+----------+----+-------+-------+------------+--------------------
1 | 201208082001 | 20652598 | 0 | 1017 | 9.00 | 0 | 2012-08-08 09:28:21
2 | 201208082001 | 20652598 | 0 | 1018 | 4.80 | 0 | 2012-08-08 09:28:21
3 | 201208082001 | 20652598 | 0 | 4104 | 213.00| 0 | 2012-08-08 09:28:21
4 | 201208082002 | 2799592 | 0 | 1017 | 7.70 | 0 | 2012-08-08 09:29:21
5 | 201208082002 | 2799592 | 0 | 1018 | 2.40 | 0 | 2012-08-08 09:29:21
6 | 201208082002 | 2799592 | 0 | 4104 | 43.00 | 0 | 2012-08-08 09:29:21
7 | 201208082003 | 6058327 | 0 | 1017 | 9.10 | 0 | 2012-08-08 09:30:02
8 | 201208082003 | 6058327 | 0 | 1018 | 4.00 | 0 | 2012-08-08 09:30:02
9 | 201208082003 | 6058327 | 0 | 4104 | 840.00| 0 | 2012-08-08 09:30:02
我需要的是:三行中的每个集具有相同的orden
相同的pacient
和不同的exams
和values
。始终有CA
值,P
值和PTH
值。我需要检查pacient
哪里有CA > 5.5
和P > 11
(以及其他一些东西)在表的原始形式中很难快速轻松地进行检查。< / p>
id | orden | pacient | per| CA | P | PTH | condition | date
---+---------------+----------+----+-------+------+------- +-----------+--------------------
1 | 201208082001 | 20652598 | 0 | 9.00 | 4.80 | 213.00 | 0 | 2012-08-08 09:28:21
2 | 201208082002 | 2799592 | 0 | 7.70 | 2.40 | 43.00 | 0 | 2012-08-08 09:28:21
3 | 201208082003 | 6058327 | 0 | 9.10 | 4.00 | 840.00 | 0 | 2012-08-08 09:28:21
这个转置表将在视图中,我尝试过子查询,但速度非常慢,所以。我希望你能帮助我。
答案 0 :(得分:2)
您没有提供有关CA
,P
和PTH
列中的内容的详细信息,但根据数据显示它们与{{1}相对应分别是},1017
和1018
。如果是这样,您可以使用带有4104
表达式的聚合函数将数据从行转换为列:
CASE
此版本不使用任何子查询来获取结果。