我有几张表如下:
欠款表: 供应商ID  期初欠款额  日期 录入员
采购计划表: 采购单编号 材料名称 种类 价格 供应商ID
进货表: 采购单编号 日期  净重
付款表: 供应商ID 付款金额 付款日期 付款人 付款类型(支票,抵账)我需要得到如下结果:供应商id  期初欠款额  当月发生重量  发生金额  本年累计总量  本年累计金额  本月付款(支票多少 抵账多少)  本年
  1           0           200         400        800           1600         支票100 抵账100
  2          100           **         **          ***          ***             **   ** 累计还款(支票多少  抵账多少) 期末欠款
      支票200  抵账300
 哪位高手帮忙解决 小弟谢谢了  

解决方案 »

  1.   

    楼主,你这样问问题叫人怎么给你解答??我写了这些,后面不知道你的意思,你解释一下啊go
    if OBJECT_ID('t1')is not null
    drop table t1
    go
    create table t1 (
    id int primary key identity(1,1), 
    name1 int not null, 
    name2 int not null, 
    name3 int not null ) 
    go
    insert into t1 values(1,2,3) 
    go
    if OBJECT_ID('t2')is not null
    drop table t2
    go
    create table t2 ( 
    id int primary key identity(1,1), 
    name varchar(20) not null

    go
    insert into t2 values ('张三') 
    insert into t2 values ('李四') 
    insert into t2 values ('王五')
    /*
    --我想查出的结果就是 
    name1 name2 name3
    张三 李四 王五
    */select *from t1
    --方法一:
    select 
          name1=a.name,name2=b.name,name3=c.name
          from t1
          left join t2 a on t1.name1=a.id
          left join t2 b on t1.name2=b.id
          left join t2 c on t1.name3=c.id
          
    --方法二:
    select 
          name1=MAX(case when num='name1' then name else '' end),
          name2=MAX(case when num='name2' then name else '' end),
          name3=MAX(case when num='name3' then name else '' end)
    from(
    select a.name as num,t2.name as name from
    (
    select name1 as ID,name='name1' from t1
    union all
    select name2 as ID,name='name2' from t1
    union all
    select name3 as ID,name='name3' from t1
    )a
    inner join t2 on t2.id=a.ID)b/*
    我有几张表如下:
    欠款表: 供应商ID 期初欠款额 日期 录入员
    采购计划表: 采购单编号 材料名称 种类 价格 供应商ID
    进货表: 采购单编号 日期 净重
    付款表: 供应商ID 付款金额 付款日期 付款人 付款类型(支票,抵账)我需要得到如下结果:供应商id 期初欠款额 当月发生重量 发生金额 本年累计总量 本年累计金额 本月付款(支票多少 抵账多少) 本年
      
    累计还款(支票多少 抵账多少) 期末欠款
    */
    go
    if OBJECT_ID('欠款表') is not null
    drop table 欠款表
    go
    create table 欠款表(
    供应商ID varchar(5),
    期初欠款额 numeric(10,2),
    日期 datetime,
    录入员 varchar(10)
    )
    go
    if OBJECT_ID('采购计划表') is not null
    drop table 采购计划表
    go
    create table 采购计划表(
    采购单编号 varchar(10),
    材料名称 varchar(30),
    种类 varchar(20),
    价格 numeric(10,2),
    供应商ID varchar(5)
    )
    go
    if OBJECT_ID('进货表') is not null
    drop table 进货表
    go
    create table 进货表(
    采购单编号 varchar(10),
    日期 datetime,
    净重 numeric(10,2)
    )
    go
    if OBJECT_ID('付款表') is not null
    drop table 付款表
    go
    create table 付款表(
    供应商ID varchar(10), 
    付款金额 numeric(10,2),
    付款日期 datetime,
    付款人 varchar(10),
    付款类型 varchar(4) check (付款类型 in('支票','抵账'))
    )select 
         
         供应商id,期初欠款额,当月发生重量 发生金额      本年累计总量 本年累计金额 本月付款(支票多少 抵账多少) 本年
      
         累计还款(支票多少 抵账多少) 期末欠款