A表 字段 NO NAME
11111 张三
B表 字段 NO MONEY
11111 1000
11111 500
11111 2000
22222 300
..... ...
C表 字段 NO PRICE TYPE
11111 500 Retail
11111 2000 Retail
..... ... ......
求解,用一条SQL语句查询条件是B.NO=A.NO,C.NO=A.NO,C.TYPE="RETAIL"得出B.MONEY相加,和C.PRICE相加。结果如下
NO NAME MONEY PRICE
11111 张三 3500 3500
11111 张三
B表 字段 NO MONEY
11111 1000
11111 500
11111 2000
22222 300
..... ...
C表 字段 NO PRICE TYPE
11111 500 Retail
11111 2000 Retail
..... ... ......
求解,用一条SQL语句查询条件是B.NO=A.NO,C.NO=A.NO,C.TYPE="RETAIL"得出B.MONEY相加,和C.PRICE相加。结果如下
NO NAME MONEY PRICE
11111 张三 3500 3500
from A inner join B on A.NO =B.NO
inner join C on A.NO =C.NO
Insert A表
select '11111','张三' Create table B表(NO char(8),MONEY int)
Insert B表
select '11111','1000' union all
select '11111','500' union all
select '11111','2000' union all
select '22222','300' Create table C表(NO char(8),PRICE int,TYPE char(8))
Insert C表
select '11111','500','Retail' union all
select '11111','2000','Retail'
select A.*,SUM(C表.PRICE) as PRICE from
(select A表.NO,A表.NAME,SUM(B表.MONEY) as MONEY from A表
inner join B表 on A表.NO =B表.NO group by A表.NO ,A表.NAME) A,C表
where A.NO=C表.NO group by A.NO,A.NAME,A.MONEY
NO NAME MONEY PRICE
-------- -----------
11111 张三 3500 2500(1 行受影响)
a.no,
a.name,
b.money,
c.price
FROM a INNER JOIN (SELECT
b.no,
SUM(b.money) AS money
FROM b
GROUP BY b.no)b
ON a.no = b.no
INNER JOIN (SELECT c.no,
SUM(c.price) AS price
FROM c
WHERE c.type = 'Retail'
GROUP BY c.no)c
ON a.no = c.no
Insert A
select '11111','张三'
Create table B(NO char(8),MONEY int)
Insert B
select '11111','1000' union all
select '11111','500' union all
select '11111','2000' union all
select '22222','300'
Create table C(NO char(8),PRICE int,TYPE char(8))
Insert C
select '11111','500','Retail' union all
select '11111','2000','Retail'
SELECT a.NO,a.NAME,SUM(b.money) AS money,
(SELECT SUM(c.price) FROM a,c WHERE a.NO=c.NO) AS price
FROM a,b WHERE a.NO=b.no GROUP BY a.NO,a.NAME
Insert A
select '11111','张三'
Create table B(NO char(8),MONEY int)
Insert B
select '11111','1000' union all
select '11111','500' union all
select '11111','2000' union all
select '22222','300'
Create table C(NO char(8),PRICE int,TYPE char(8))
Insert C
select '11111','500','Retail' union all
select '11111','2000','Retail'
SELECT a.NO,a.NAME,SUM(b.money) AS money,
(SELECT SUM(c.price) FROM a,c WHERE a.NO=c.NO) AS price
FROM a,b WHERE a.NO=b.no GROUP BY a.NO,a.NAME
Create table A表(NO char(8),NAME char(50))
Insert A表 select '11111','张三'
Create table B表(NO char(8),MONEY int)
Insert B表 select '11111','1000' union all
select '11111','500' union all
select '11111','2000' union all
select '22222','300'
Create table C表(NO char(8),PRICE int,TYPE char(8))
Insert C表 select '11111','500','Retail' union all
select '11111','2000','Retail'
select a.no,name,money,price
from A表 a join (
select no,SUM(money) as [money] from B表 group by NO
)as b
on a.no=b.NO
join
(select no,SUM(price) as price from
C表 where TYPE='retail'
group by NO) as c
on a.NO=c.NO
a.NO
,isnull(sum(b.MONEY),0) AS MONEY
,isnull(sum(c.PRICE),0) AS PRICE
from a
left join b on a.NO=b.NO
left join c on a.NO=c.NO and c.TYPE='Retail'
grup by a.NO
仰泳的鱼谢谢指教,太完美的答案了。
http://bbs.csdn.net/topics/390288622?page=1#post-392977725
这个贴子也没结,你回复一下,把分送你。谢谢。