问题1
A表
油品名称  日期           期末库存
油a       2006.2.2         100
油a       2006.2.3         150
油b       2006.2.6         80
油b       2006.2.7         130B表
油品名称  日期           油量
油a       2006.1.2         50
油a       2006.1.8         80
油b       2006.1.6         60
油b       2006.1.26        70得到结果  a表加上前日库存油品名称  日期         前日库存  期末库存
油a       2006.2.2        80       100
油a       2006.2.3       100       150
油b       2006.2.6        70        70
油b       2006.2.7        80       130
前日库存如果不是第一天的就等于前日期末库存
是第一天的就到b表里找最近日期的油量就是。
问题2  sqlserver里面的这样的语句oracle里面怎么写,后面部分
Create Table A(ID Int,Name Varchar(10))
Insert A Select 1,'AA'
Union All Select 2,'BB'
Union All Select 3,'CC'
GODeclare @S Varchar(1000)
Select @S=''
Select @S=@S+Name From A
Select @S
GO
Drop Table A
 
  

解决方案 »

  1.   

    第一个看不太明白什么意思
    第二个问题
    Create Table A(ID Int,Name Varchar(10));
    Insert into A Select (1,'AA');
    Insert into A Select (2,'BB');
    Insert into A Select (3,'CC');S Varchar2(1000);
    S :='';
    S :=S || (select Name From A)Drop Table A
      

  2.   

    问题2Declare :S Varchar(1000)
    Select :S=''
    Select :S=:S+Name From A
    Select :S
    GO
    Drop Table A
      

  3.   

    Sorry!写错了!
    问题2Declare S Varchar(1000)
    Select S := ''
    Select S=S+Name From A
    Select S
    GO
    Drop Table A
      

  4.   

    SQL> select * from a;油品名称   日期         期末库存
    ---------- ---------- ----------
    油a        2006.2.2          100
    油a        2006.2.3          150
    油b        2006.2.6           80
    油b        2006.2.7          130SQL> select * from b;油品名称   日期             油量
    ---------- ---------- ----------
    油a        2006.1.2           50
    油a        2006.1.8           80
    油b        2006.1.6           60
    油b        2006.1.26          70SQL> With ttt As (Select 油品名称,日期,期末库存,row_number() over (Partition By
    油品名称 Order By 日期) rid From
      2  (
      3  Select 油品名称,to_date(日期,'yyyy.mm.dd') 日期,期末库存  From a
      4  Union
      5  Select 油品名称,to_date(日期,'yyyy.mm.dd') 日期,油量 期末库存 From b) )
      6  Select a.油品名称,a.日期,(Select 期末库存 From ttt b Where b.油品名称=c.油
    品名称 And b.rid=c.rid-1) 前日库存,a.期末库存 From ttt c,a
      7  Where a.油品名称=c.油品名称 And to_date(a.日期,'yyyy.mm.dd')=c.日期;油品名称   日期         前日库存   期末库存
    ---------- ---------- ---------- ----------
    油a        2006.2.2           80        100
    油a        2006.2.3          100        150
    油b        2006.2.6           70         80
    油b        2006.2.7           80        130SQL> select * from ta;油品名称   日期         期末库存 罐号
    ---------- ---------- ---------- ----------
    油a        2006.2.2          100 m25
    油a        2006.2.2          150 n23
    油b        2006.2.6           80 k23
    油b        2006.2.6          130 t58
    油b        2006.2.6           90 f823
    油b        2006.2.7          130 fh88已选择6行。SQL> Select 油品名称, 日期, Sum(期末库存) 期末库存,
      2                      Substr((Select Max(Sys_Connect_By_Path(罐号, '/'))
      3                                                      From (Select Row_Number
    () Over(Partition By 油品名称, 日期 Order By 油品名称, 日期) Rid,
      4
                                     Row_Number() Over(Partition By 油品名称, 日期 O
    rder By 油品名称, 日期) + 1 Pid, Ta.*
      5
            From (Select * From Ta Order By 油品名称, 日期, 罐号) Ta) b
      6                                                      Where b.油品名称 = a.油
    品名称 And b.日期 = a.日期
      7                                                      Start With Rid = 1
      8                                                      Connect By Prior Pid =
    Rid), 2) 罐号
      9  From Ta a
     10  Group By 油品名称, 日期;油品名称   日期         期末库存
    ---------- ---------- ----------
    罐号
    --------------------------------------------------------------------------------油a        2006.2.2          250
    m25/n23油b        2006.2.7          130
    fh88油b        2006.2.6          300
    m25/n23/t58