例如,假设你有下表
CourseId | CourseTitle | EntryMonth | EntryYear |
ebdef239-abb7-4a82-9229-1ed37496da86 | Maths FT | January | 2013 |
57504a66-4882-4794-a8b9-af0ead38dc70 | Maths FT | February | 2013 |
f06c5e58-5563-4dfd-a8fc-2ce186c2106f | Maths FT | February | 2014 |
0c81dfe6-0b11-4cad-a27c-970dbdb2876c | Maths FT | February | 2015 |
ebdef239-abb7-4a82-9229-1ed37496da86 | English PT | January | 2013 |
57504a66-4882-4794-a8b9-af0ead38dc70 | English PT | January | 2014 |
是否可以编写一个按CourseTitle& amp; EntryMonth,但将EntryYear值组合成临时列(最好用逗号分隔)。所以它看起来像这样:
CourseId | CourseTitle | EntryMonth | NewEntryYear |
ebdef239-abb7-4a82-9229-1ed37496da86 | Maths FT | January | 2013 |
57504a66-4882-4794-a8b9-af0ead38dc70 | Maths FT | February | 2013, 2014, 2015 |
ebdef239-abb7-4a82-9229-1ed37496da86 | English PT | January | 2013, 2014 |
非常感谢任何例子。感谢。
答案 0 :(得分:4)
select CourseTitle
, EntryMonth
, stuff((
select ', ' + cast(EntryYear as varchar)
from Table1 t2
where t1.CourseTitle = t2.CourseTitle
and t1.EntryMonth = t2.EntryMonth
for xml path('')
), 1, 2, '') as Years
from Table1 t1
group by
CourseTitle
, EntryMonth
答案 1 :(得分:0)
如果您使用的是oracle 10g或更高版本,则以下内容将起作用:
SELECT COURSEID, COURSETITLE, ENTRYMONTH,
LISTAGG(ENTRYYEAR, ',') WITHIN GROUP (ORDER BY ENTRYYEAR) AS NEWENTRYYEAR
FROM YOUR_TABLE_NAME
GROUP BY COURSEID, COURSETITLE, ENTRYMONTH
如果你没有使用Oracle 10g,那么这个查询将没有多大帮助,我很抱歉。