第一个问题:
Select 用户表.用户ID,用户名,地址...
from 用户表
left outer join 采购详细表 on 采购详细表.用户ID = 用户表.用户ID
where datepart(mm, 采购日期) = 5
group by 用户表.用户ID,用户名,地址...
having sum(采购金额) between 10w and 100w
-- 3. 查找用户一次性采购产品:柴油的数量大于100桶的用户ID和地址.
select 用户ID,地址
from 用户表 aa
where exists(
select 1 from 采购详细表 a,产品表 b
where a.用户ID=aa.用户ID and a.产品ID=b.产品ID
and a.数量>100 and b.产品名称='柴油'
)
-- 2. 将用户表的用户ID字段内容改为(用户ID+用户名)表示,并删除用户名字段.
--是否考虑 采购详细表 的同步更改? 如果考虑:
--同步修改 采购详细表
update a set 用户ID=a.用户ID+b.用户名
from 采购详细表 a
join 用户表 b on a.用户ID=b.用户ID
-- 1. 求所有在5月份采购的金额在10w-100w的客户所有资料.
select * from 用户表 a
where (
select sum(采购金额) from 采购详细表
where 用户ID=a.用户ID and month(采购日期)=5
) between 100000 and 1000000
1.
select a.用户ID,a.产品ID,sum(b.采购金额) as 采购金额,sum(b.数量) as 数量,c.产品名称,c.单个金额
from 用户表 right join 采购详细表 b left join 产品表 c
on month(采购日期) = 5
and a.用户ID=b.用户ID
and b.产品ID=c.产品ID
and sum(b.采购金额) >= 10w
and sum(b.采购金额) <= 100w
group by a.用户ID,a.产品ID,c.产品名称,c.单个金额
3.
select a.用户ID,a.地址
from (
select a.用户ID,a.地址,a.产品ID, b.数量,c.产品名称
from 用户表 right join 采购详细表 b left join 产品表 c
where a.用户ID=b.用户ID
and b.产品ID=c.产品ID) a
where a.采购数量 > 100
and a.产品名称 = '柴油'
Declare cur Cursor for Select 用户ID from 用户表
Open cur
declare @ID varchar(100)
fetch next from cur into @ID
while @@fetch_status <> -1
begin
update 用户表 set 用户ID = 用户ID + 用户名 where 用户ID = @ID
fetch next from cur into @ID
end
close cur
DEALLOCATE cur
GO
alter table 用户表 drop column 用户名
GO