注册 登录
编程论坛 SQL Server论坛

请助一条查询语句

sgjackey 发布于 2008-10-21 14:26, 1836 次点击
以名称分组查询,要计算全部数量的总数小于5,又不要单个数据大于3的.(加多条条件单位(个)(箱),只显示个为3个以上

名称       数量      单位
A            2        箱
A            3        箱
A            1        个
A            1.5      个
A            2.1      箱
B            4        个
B            3        箱
B            2        个
B            1        箱
C            1        个
C            1.5      个
C            1.2      箱
C            0.5      箱
D            1        个
D            1.1      个
D            1.2      个
D            1.3      个
结果只有D符合:
D            4.5

[[it] 本帖最后由 sgjackey 于 2008-10-21 16:48 编辑 [/it]]
11 回复
#2
sgjackey2008-10-21 14:52
问题存在,又要所有加总,又要篩選單條不可大于3的。要是篩選了小于3的。這樣加總又加不齊
#3
alice1632008-10-21 15:48
帮顶我也想知道
#4
sgjackey2008-10-21 15:51
谢谢.多重条件真的对于我这种初哥,不懂不懂
#5
花渊美步2008-10-21 15:54
LZ要是有答案了 一定要发来给我也看看啊
你这个题目我研究半天了还没做出来
#6
happynight2008-10-21 16:18
Create Table #ls1(F1 varchar(10),F2 numeric(5,2))

INSERT INTO #ls1 VALUES('A',2)
INSERT INTO #ls1 VALUES('A',3)
INSERT INTO #ls1 VALUES('A',1)
INSERT INTO #ls1 VALUES('A',1.5)
INSERT INTO #ls1 VALUES('A',2.1)

INSERT INTO #ls1 VALUES('B',1)
INSERT INTO #ls1 VALUES('B',2)
INSERT INTO #ls1 VALUES('B',3)
INSERT INTO #ls1 VALUES('B',4)

INSERT INTO #ls1 VALUES('C',1)
INSERT INTO #ls1 VALUES('C',1.5)
INSERT INTO #ls1 VALUES('C',1.2)

SELECT #ls1.F1,SUM(#ls1.F2) FROM #ls1
INNER JOIN
(SELECT F1,Count(*) AS Cou FROM #ls1 GROUP BY F1 Having Count(*)<5 ) A  ON #ls1.F1=A.F1
WHERE #ls1.F1 NOT IN (SELECT DISTINCT F1  FROM #ls1 WHERE F2>=3 )   
GROUP BY #ls1.F1
------------------------
C    3.70
#7
madpbpl2008-10-21 16:33
create table tb
(
名称 varchar(10),
数量 numeric(10,1)
)
insert into tb values('A',2)
insert into tb values('A',3)
insert into tb values('A',1)
insert into tb values('A',1.5)
insert into tb values('A',2.1)

insert into tb values('B',4)
insert into tb values('B',3)
insert into tb values('B',2)
insert into tb values('B',1)

insert into tb values('C',1)
insert into tb values('C',1.5)
insert into tb values('C',1.2)



select 名称,max(数量) as 数量,sum(数量) as 总数 from [tb]  group by 名称
having  sum(数量)<5 and max(数量)<3
go
#8
sgjackey2008-10-21 16:36
一定要建立辅助表才可以达成吗?
#9
sgjackey2008-10-21 17:02
先谢谢大家,特别是madpbpl 的MAX,解决了问题 .后来我添加了条件,不知也可以这样嗯
#10
sgjackey2008-10-22 08:36
大家早,怎我更新条件后,没回应了.
#11
happynight2008-10-22 08:38
[bo][un]madpbpl[/un] 在 2008-10-21 16:33 的发言:[/bo]

create table tb
(
名称 varchar(10),
数量 numeric(10,1)
)
insert into tb values('A',2)
insert into tb values('A',3)
insert into tb values('A',1)
insert into tb values('A',1.5)
insert into tb v ...

学习 呵呵 思维方式还是太直接简单了
#12
sgjackey2008-10-22 09:00
自已试了试,只能用happynight 的方法才可以了.谢谢大家
1