简单的sql语句问题,每天在线,OK就接贴!!!

flyppl 2004-05-09 12:55:53
两个表:用户表:(用户ID,用户名,地址...)
采购详细表:(采购单编号,采购日期,采购金额,数量,产品ID,用户ID...)
产品表:(产品ID,产品名称,产品数量,单个金额...)
1. 求所有在5月份采购的金额在10w-100w的客户所有资料.
2. 将用户表的用户ID字段内容改为(用户ID+用户名)表示,并删除用户名字段.
3. 查找用户一次性采购产品:柴油的数量大于100桶的用户ID和地址.
谢谢,后面两个问题分会多些的.
...全文
50 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyppl 2004-05-12
  • 打赏
  • 举报
回复
呵呵,ok!我揭,就从这一层开始.各位不要急啊.
whisht 2004-05-09
  • 打赏
  • 举报
回复
第一个问题:
Select 用户表.用户ID,用户名,地址...
from 用户表
left outer join 采购详细表 on 采购详细表.用户ID = 用户表.用户ID
where datepart(mm, 采购日期) = 5
group by 用户表.用户ID,用户名,地址...
having sum(采购金额) between 10w and 100w
jmcy12 2004-05-09
  • 打赏
  • 举报
回复
题1:
select * from 用户表
where 用户id in
(select 用户id,sum(采购金额) as sum from 采购详细表 group by 用户id
having sum >= 10w and sum <= 100w)

题2:
select 用户ID+用户名 as 用户ID,地址... into 新表名 from 用户表

drop table 用户表

题3:
select * from 用户表
where 产品ID in
(select 用户ID from 采购详细表
where 数量 > 100
and 产品ID in (select 产品ID from 产品表 where 产品名称 = "柴油"))


lazybone 2004-05-09
  • 打赏
  • 举报
回复

--修改 用户表
update 用户表 set 用户ID=rtrim(用户ID)+rtrim(用户名)

--删除字段 用户名
alter table 用户表 drop column 用户名
ssyqcwj 2004-05-09
  • 打赏
  • 举报
回复
偶同意邹建的方法!楼主,搞定没有?
zjcxc 元老 2004-05-09
  • 打赏
  • 举报
回复
-- 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.产品名称='柴油'
)
zjcxc 元老 2004-05-09
  • 打赏
  • 举报
回复

-- 2. 将用户表的用户ID字段内容改为(用户ID+用户名)表示,并删除用户名字段.
--是否考虑 采购详细表 的同步更改? 如果考虑:
--同步修改 采购详细表
update a set 用户ID=a.用户ID+b.用户名
from 采购详细表 a
join 用户表 b on a.用户ID=b.用户ID

--修改 用户表
update 用户表 set 用户ID=用户ID+用户名

--删除字段 用户名
alter table 用户表 drop column 用户名
zjcxc 元老 2004-05-09
  • 打赏
  • 举报
回复
-- 1. 求所有在5月份采购的金额在10w-100w的客户所有资料.
select * from 用户表 a
where (
select sum(采购金额) from 采购详细表
where 用户ID=a.用户ID and month(采购日期)=5
) between 100000 and 1000000
peng2050 2004-05-09
  • 打赏
  • 举报
回复
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.产品名称 = '柴油'

写的不好的请指出,我也是初学者
lazybone 2004-05-09
  • 打赏
  • 举报
回复
第三个:
select 用户ID, 地址
from 用户表 a join
(select 用户ID from 采购详细表 where 数量>100)b
on a.用户ID=b.用户ID
lazybone 2004-05-09
  • 打赏
  • 举报
回复
第一个:
select *
from 用户表 a join
(select 用户ID from 采购详细表 where (采购金额 between 10 and 1000) and (month(采购日期)=5))b
on a.用户ID=b.用户ID
koskinen 2004-05-09
  • 打赏
  • 举报
回复
2.
create table new用户表
(
用户ID VARCHAR(50),
地址 varchar(5),
........
)

update 用户表 set 用户ID=用户ID+用户名

insert into new用户表
select 用户ID,地址.....from 用户表




flylpp 2004-05-09
  • 打赏
  • 举报
回复
第一个直接是select语句加where条件
第二个不清楚,关注!
第三个是这意思吗?
select 用户ID 地址 from 采购详细表 where 产品ID=柴油 and 数量>100
jmcy12 2004-05-09
  • 打赏
  • 举报
回复
题1修改一下:
select * from 用户表
where 用户id in
(select 用户id,sum(采购金额) as sum from 采购详细表 group by 用户id
having sum >= 10w and sum <= 100w and month(采购日期) = 5)
whisht 2004-05-09
  • 打赏
  • 举报
回复
第二个问题:

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

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧