我正在使用sqlite 3.15.1。 ) N/ U6 Z R# I- D我有一张表master,有大学时间表。' R8 v {6 @) |2 f2 _& P# Z
看起来像 : $ l2 s4 z. S& Q5 f3 T: r! nday sem sec hour sub_id ---------- ---------- ---------- ---------- ---------- MON 5 5 5 B 4 IS51 MON 5 5 5 B 4 IS53 MON 5 5 5 B 5 5 5 10CS54 MON 5 5 5 B CS55 MON 5 5 5 B 7 CS53 MON 3 A CS33还有更多的价值… , z3 C5 ^ o. `其他值相同 ,有多个sub_id ,这意味着-星期一,B5名学生可能有2个或更多的实验(sub_id)。(分批进行)。/ N0 D; [6 X8 u& p6 R
我这样做是为了得到合适的时间表: 6 k# p$ Q6 q2 x0 g2 j3 xselect day,max( case when hour =1 then sub_id end ) as 'hour-1',max( case when hour =2 then sub_id end ) as 'hour-2',max( case when hour =3 then sub_id end ) as 'hour-3',max( case when hour =4 then sub_id end ) as 'hour-4',max( case when hour =5 then sub_id end ) as 'hour-5',max( case when hour =6 then sub_id end ) as 'hour-6',max( case when hour =7 then sub_id end ) as 'hour-7',max( case when hour =8 then sub_id end ) as 'hour-8'from masterwhere sem=5 and sec='B'group by dayorder by day;然而,当多个值(即一个值)出现时,它只给出一个max()值。我用的时候min(),我得到了min()值。我怎样才能两者兼得?7 ]6 o) } g z7 l0 T
视图如下: 8 l. H& Q1 C2 dday hour- hour-二 hour-3 hour-4 hour-5 hour-6 hour-7 hour-8 ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------FRI CS5二 10CS54 10CS53 10CS55 HRD HRD TUT MON CSL58 10CSL58 10CSL58 10IS5 10CS54 10CS55 10CS53 SAT IS5 10CS55 10CS56 10CS5二 THU CS53 10IS5 10CS54 10CS5二 TUE CS54 10CS5二 10CS56 10CS56 WED CS56 10IS5 10CS53 10CS55 CSA CSA CSA但我想要这样的东西: 2 I' E G" \+ z9 M5 \day hour-1 hour-2 hour-3 hour-4 hour-5 hour-6 hour-7 hour-8 ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------FRI CS52,10CS53 10CS54 10CS53 10CS55 HRD HRD TUT MON CSL58 CSL58,10CSL33 10CSL58 10IS51 1010CS54 10CS55 10CS53 SAT IS51,10IS48 10CS55 10CS56 10CS52 THU 10CS53 10IS51 10CS54 10CS52 TUE 10CS54 10CS52 10CS56 10CS56 WED 10CS56 10IS51 10CS53 10CS55 CSA CSA CSA也就是说,所有类别-用逗号分开,而不是min()或max()。 " H# j" c, w9 M有可能实现这个目标吗?请帮我。 4 _. j8 c% c5 b1 L1 b) m. ^谢谢。5 M/ Q2 C. L# u& m8 b, u' {
" z6 @& X, T4 e6 X: X/ W解决方案: 5 i8 G7 r' B) O" _1 m# @! _0 G 将MIN / MAX替换为GROUP_CONCAT, R+ W* W4 _9 y- N) J9 C7 k( k$ J8 H
group_concat( case when hour =8 then sub_id end ) as 'hour-8'from masterwhere sem=5 and sec='B'group by dayorder by day; group_concat( case when hour =8 then sub_id end ) as 'hour-8'from masterwhere sem=5 and sec='B'group by dayorder by day;