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