最后30分,急用!高手帮忙!,这样的计算列能否用SQL语句实现

树猫 2003-12-29 10:46:35
A表:房间表
房间ID 房间面积 单价(元/平方米)
1 100 2000
2 80 1800
3 75 1500

B表:房间设施表(房间表和房间设施表是一对多的关系)

房间ID 辅助设施名称 辅助设施数量 辅助设施单价
1 空调 2 5000
1 阳台 1 10000
2 空调 1 8000
3 阳台 1 8000

现在想查出 房间ID,房间面积,房间总价格(房间面积*单价+辅助设施总造价)
请问能直接用SQL语句实现吗?
...全文
57 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
树猫 2003-12-30
  • 打赏
  • 举报
回复
问题解决了
gmlxf,非常感谢你不厌其烦的回答我的问题。
gmlxf 2003-12-30
  • 打赏
  • 举报
回复
那一定是你的真实情况的问题了,方法就是这样的。

你是否使用了group by

如果使用了,那么如:
select col1,col2,sum(1) from t group by col1
将会出错,必须:
select col1,col2,sum(1) from t group by col1,col2

看的出错提示好象是多了列了,就像上面的col2没有在group by后面指定。

树猫 2003-12-30
  • 打赏
  • 举报
回复
谢谢gmlxf,按你的方法是对的
但是将表换成真的项目中的表,就出错了:
在包含外部引用的被聚合表达式中指定了多个列。如果被聚合的表达式包含外部引用,
那么该外部引用就必须是该表达式中所引用的唯一的一列
这什么错阿

我的提问中的表是真实表的一部分字段,但是主要的东西没有变啊!?
gmlxf 2003-12-29
  • 打赏
  • 举报
回复
create table #A(房间ID int,房间面积 int,单价 int)
insert #A
select 1, 100, 2000
union select 2, 80, 1800
union select 3, 75, 1500

create table #B(房间ID int,辅助设施名称 varchar(10),辅助设施数量 int,辅助设施单价 int)
insert #B
select 1, '空调', 2, 5000
union select 1, '阳台', 1, 10000
union select 2, '空调', 1, 8000
union select 3, '阳台', 1, 8000

select * from #A
select * from #B
select 房间ID,房间面积,
房间总价格 = 房间面积 * 单价 + (select sum(辅助设施单价 * 辅助设施数量) from #B where 房间ID = a.房间ID)
from #A a

drop table #A,#B

/*

房间ID 房间面积 单价
----------- ----------- -----------
1 100 2000
2 80 1800
3 75 1500

(所影响的行数为 3 行)

房间ID 辅助设施名称 辅助设施数量 辅助设施单价
----------- ---------- ----------- -----------
1 空调 2 5000
1 阳台 1 10000
2 空调 1 8000
3 阳台 1 8000

(所影响的行数为 4 行)

房间ID 房间面积 房间总价格
----------- ----------- -----------
1 100 220000
2 80 152000
3 75 120500

(所影响的行数为 3 行)
*/
gmlxf 2003-12-29
  • 打赏
  • 举报
回复
select 房间ID,房间面积,
房间总价格 = 房间面积 * 单价 + (select sum(辅助设施单价 * 辅助设施数量) from B表 where 房间ID = a.房间ID)
from A表 a
gmlxf 2003-12-29
  • 打赏
  • 举报
回复
select 房间ID,房间面积,
房间总价格 = 房间面积*单价*(select sum(辅助设施单价*辅助设施数量) from B表 where 房间ID = a.房间ID)
from A表 a

34,590

社区成员

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

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