获取列中行的值

时间:2015-09-15 09:58:25

标签: sql oracle oracle11g

我有一个包含以下数据的表

shinyApp(
  ui=fluidPage(
    HTML('<input type="text" id="client_time" name="client_time" style="display: none;" > '),
    tags$script('
    $(function() {
     var time_now = new Date()
     var month_now=time_now.getMonth()+1
      $("input#client_time").val(time_now.getFullYear()+"-"+month_now+"-"+time_now.getDate())
  });    
'),
    dateInput("date","Choose a date",max=Sys.Date()),
    textOutput("text")
  ),server = function(input, output,session) {
    observe({
    updateDateInput(session,"date", value = as.Date(input$client_time), max = as.Date(input$client_time))
    })
    output$text=renderText(as.character(input$date))
  }
)

我需要一个select查询来获得如下结果:

id     student      class      
1      English       3-B      
2      null          null   
3      null          null   
4      Jack          OuMe 
5      Richard       DSA      
6      Jhon          Ross   
7      French        5-B       
8      null         null      
9      null         null      
10     Cena         ADI        
11     Mike         Rock          
12     Philip       DSK  

我尝试了查询,但我没有得到正确的结果

  id       student       class    classSTUD  
    1      English       3-B       3-B
    2      null          null      3-B
    3      null          null      3-B
    4      Jack          OuMe      3-B
    5      Richard       DSA       3-B
    6      Jhon          Ross      3-B
    7      French        5-B       5-B
    8      null         null       5-B
    9      null         null       5-B
    10     Cena         ADI        5-B
    11     Mike         Rock       5-B   
    12     Philip       DSK        5-B

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

您的数据库设计似乎存在严重缺陷。您需要两个表才能使其正常工作。您在同一列中混合了两种不同类别的数据,这就是您遇到问题的原因。您在同一专栏中有课程和学生。

为班级创建一个单独的表,为学生创建一个表。

我不知道为什么你的表只包含空值。

类表:

id    class    classcode
1     English  3-B
2     French   5-B

学生表:

id    student  classid
1     Jack     1
2     Richard  1
3     Jhon     1
4     Cena     2
5     Mike     2
6     Philip   2

如果我怀疑我认为你的班级代码是独一无二的,那么无论如何它们都是自然键,所以你可以这样做:

类表:

classcode    class
3-B          English
5-B          French

学生表:

id    student    classcode
1     Jack       3-B
2     Richard    3-B
3     Jhon       3-B
4     Cena       5-B
5     Mike       5-B
6     Philip     5-B

我已经在学生表中留下了id字段,因为很可能在某些时候你会有两个Jacks / Richards / Jhons / whatevers,所以拥有一个唯一的id是有道理的。

如果您对所显示的数据感到困惑,我认为您遇到了麻烦。

答案 1 :(得分:0)

目前还不清楚你的数据结构究竟代表什么,但似乎你需要这样的东西:

SELECT ID, STUDENT, CLASS,
       LAG((CASE WHEN CLASS LIKE '%-%' THEN CLASS END) IGNORE NULLS) OVER
           (ORDER BY ID) as CLASSSTUD
FROM MYTABLE 
ORDER BY ID; 

答案 2 :(得分:0)

我解决了问题,我改进了Gordon Linoff回答的答案

:SETVAR userdb "DB_testing"

CREATE DATABASE $(DB_userdb)