2017-05-26 69 views
0

我有1个问题在sql中如何在sql中显示1行中的3行?

我该如何显示3行的行?

这里是我的SQL代码

SELECT jobcard.code AS code1,jobcard.name AS name1,nvl(masterpm.id,0)toal 
FROM jobcard 
    LEFT JOIN masterpm ON jobcard.id = masterpm.jobcard_id 
        and masterpm.id in (select masterpm_id from cbmmasterpm) 

和图像从选择结果 image

现在我怎么能显示3特里行1行代码,名称不得到重复一遍,我真的很需要那

+0

我删除了不兼容的数据库标记。 –

+0

@GordonLinoff谢谢:) – saman

+0

请阅读http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-question/285557和接受的答案 –

回答

1

如果你正在使用MySQL,你可以使用GROUP BYGROUP_CONCAT所有TOAL值如:

SELECT jobcard.code AS code1,jobcard.name AS name1, GROUP_CONCAT(NVL(masterpm.id,0)) AS toal 
FROM jobcard LEFT JOIN masterpm ON jobcard.id = masterpm.jobcard_id AND masterpm.id in (SELECT masterpm_id FROM cbmmasterpm) 
GROUP BY code1, name1; 

Here's关于GROUP_CONCAT的MySQL文档。

更新

当你使用的是Oracle,你可以使用listagg函数来实现相同的功能,例如:

SELECT jobcard.code AS code1, jobcard.name AS name1, 
LISTAGG(NVL(masterpm.id,0), ', ') WITHIN GROUP (ORDER BY masterpm.id) "TOAL" 
FROM jobcard LEFT JOIN masterpm ON jobcard.id = masterpm.jobcard_id AND masterpm.id in (SELECT masterpm_id FROM cbmmasterpm) 
GROUP BY code1, name1; 

Here's的文档。

+0

ty但我使用oracle – saman

+0

哪个版本的oracle? –

+0

oracle 11.0.2或11g – saman