我有以下表名ETEST,col1和col2作为列名。
'value' => function($data, $row) {
return CHtml::image(
LessonController::getCamByClassId($data->Lesson_ID)[0]['Cam1'],
"default image",
array('width'=>195, 'height'=>110)
);
}
值eid,name和可以重复,我想编写一个sql查询来显示如下数据:
col1 col2
==== ====
eid 101
name abc
age 30
eid 102
name xyz
age 40
我尝试了类似下面的内容,但这并不适用于所有记录。
eid name age
101 abc 30
102 xyz 40
请注意,上表中col1的eid,名称和年龄可以有n个条目。
请帮忙。 问候, MKS
答案 0 :(得分:1)
将列重写为行的最优雅方法是使用pivot
语句。这样的代码看起来像这样:
select *
from etest
pivot
( min(col2)
for col1 in ('eid', 'name', 'age')
)
但我同意前一种说法:数据库设计是值得怀疑的。您永远无法确定一行中选择的eid
是否属于另一行中的另一行name
或age
。所以提供的解决方案只有一半。