回答

收藏

每组的下一个最小值大于或等于给定值

技术问答 技术问答 394 人阅读 | 0 人回复 | 2023-09-14

给出以下表1:" c" O" n4 Z# ^  T2 d; Y
                RefID  intVal  SomeVal    ----------------------           10   10                               val01        1       200                               1           val02       1     30 30                          val 303        1     40                                                 40val              5050                           val505        2         100                             2      val06         2     20                                 0          2020val         2      30                                 2      val 808        2       40                                                     40 val09        2     50                                            50 50   50val10       3       12                         3     3       val111       3      14                             3                    14   14        14                                                                 111111111111111111111111val12        4       10                                4     val13       55      1000                          5                      1000val14       55      150                         555                55550val15       55     1000val16和Table2包含一些RefID和intVals,例如. P( W; u8 \2 j/ I( ~
                RefID  intVal    -------------            111111                                                    50  50  50                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        需要SQL获取每个句子RefID和NULL下一个更大intValue(如果在表1中找不到)' C1 w$ m  P* p+ m
                RefID  intVal  nextGt  SomeVal     ------------------------------           11  111     20                          111111     1111val101       1      28   30    30  30                                                30   30val 303       2       9    10                                                   val06        2    50 50  50   50   50  50                    val10       2      511                                     2      NULL   NULL        4      11    NULL   NULL       5          100                   5                                1000  val14       55    150   150val15      55     151   10000                 55                15151515151val16帮助将不胜感激!
* S1 w* @7 ^  e6 E                                                               
8 H- |* n/ {% u, D# I+ H    解决方案:                                                               
/ n+ H$ N$ B" \0 H4 P: ^                                                                派生表a从给定的表1refid和表2检索最小值intVal。只检索外部查询someValue。
) V# O3 z2 I( h& pselect a.refid,a.intVal,a.nextGt,table1.SomeValfrom(    select table2.refid,table2.intval,min (table1.intVal) nextGt      from table二       left join table        on table2.refid = table1.refid       and table2.intVal 有现场测试Sql Fiddle。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则