我的系统是winXP SP3+SQL2005。 问题描述:
我有这样一个表 mytable --表名 id 信息单号 设备
1 1001 a
2 1001 b
3 1001 a
4 1001 b
5 1002 b
6 1003 a
7 1004 c
需求说明:
想用一句SQL语句,得到这样的结果:统计出‘设备’字段相同值在本表中出现的次数,如果信息单号一样的话,算出现一次。如我要统计相同值‘a',正确的结果应该得到 2 次就对了,而不是3次,因为前两次'a'的信息单号一样。
我有这样一个表 mytable --表名 id 信息单号 设备
1 1001 a
2 1001 b
3 1001 a
4 1001 b
5 1002 b
6 1003 a
7 1004 c
需求说明:
想用一句SQL语句,得到这样的结果:统计出‘设备’字段相同值在本表中出现的次数,如果信息单号一样的话,算出现一次。如我要统计相同值‘a',正确的结果应该得到 2 次就对了,而不是3次,因为前两次'a'的信息单号一样。
CREATE TABLE #tp
(
id INT IDENTITY,
infoSo INT,
Enqu VARCHAR(10)
)
INSERT INTO #tp
SELECT 1001,'a'
UNION ALL
SELECT 1001,'b'
UNION ALL
SELECT 1001,'a'
UNION ALL
SELECT 1001,'b'
UNION ALL
SELECT 1002,'b'
UNION ALL
SELECT 1003,'a'
UNION ALL
SELECT 1004,'c'SELECT t.infoso,count(t.Enqu) cnt
FROM #tp t
WHERE NOT EXISTS(SELECT NULL FROM #tp p
WHERE p.infoSo=t.infoSo
AND p.Enqu=t.Enqu
AND p.id>t.id)
GROUP BY t.infoSoinfoso cnt
----------- -----------
1001 2
1002 1
1003 1
1004 1(4 row(s) affected)
declare @num varchar(20)
set @num='a'
select count(distinct 信息单号) from 表名 where 设备=@num
select 设备,max(cs) from (
select 设备,count(1) as cs
from mytable
group by 信息单号,设备
)a
这样不是更快点?
SELECT t.Enqu, count(t.infoso)cnt
FROM #tp t
WHERE NOT EXISTS(SELECT NULL FROM #tp p
WHERE p.infoSo=t.infoSo
AND p.Enqu=t.Enqu
AND p.id>t.id)
GROUP BY t.EnquEnqu cnt
---------- -----------
a 2
b 2
c 1(3 row(s) affected)
pt1314917,你好,你写的这些变量我在delphi中如何表示?能否指导一下。
我试了,结果为0,不过还是谢谢了。
set @num='a'
这些东东在delphi中如何写
id invoice device
1 1001 a
2 1001 b
3 1001 a
4 1001 b
5 1002 b
6 1003 a
7 1004 c写的SQL语句如下SELECT count(distinct [invoice]) as invoicecount,[device]
FROM [master].[dbo].[mytable]
group by device
最终的结果如下
invoicecount device
2 a
2 b
1 c
from mytable
where '设备'='a'
select count(1) as cnt,Enqu from #tp a where not exists (select 1 from #tp where a.Enqu=Enqu and a.infoSo=infoSo and id>a.id) group by a.Enqu
--建表,借用1楼的表 o(∩_∩)o ~
CREATE TABLE #tp
(
id INT IDENTITY,
infoSo INT,
Enqu VARCHAR(10)
)
INSERT INTO #tp
SELECT 1001,'a'
UNION ALL
SELECT 1001,'b'
UNION ALL
SELECT 1001,'a'
UNION ALL
SELECT 1001,'b'
UNION ALL
SELECT 1002,'b'
UNION ALL
SELECT 1003,'a'
UNION ALL
SELECT 1004,'c'
--查询
SELECT Enqu,COUNT(DISTINCT infoSo) cnt FROM #tp
GROUP BY Enqu
--结果
Enqu cnt
a 2
b 2
c 1
from mytable
group by 信息单号,设备
( id int,
信息单号 char(6),
设备 char(6))INSERT INTO abc
SELECT 1,'1001','a'
UNION ALL
SELECT 2,'1001','b'
UNION ALL
SELECT 3,'1001','a'
UNION ALL
SELECT 4,'1001','b'
UNION ALL
SELECT 5,'1002','b'
UNION ALL
SELECT 6,'1003','a'
UNION ALL
SELECT 7,'1004','c'
select distinct 信息单号, count(设备) from abc
group by 信息单号,设备运行结果如下所示:信息单号 设备
1001 2
1002 1
1003 1
1004 1
CREATE TABLE #tp
(
id INT IDENTITY,
infoSo INT,
Enqu VARCHAR(10)
)
INSERT INTO #tp
SELECT 1001,'a'
UNION ALL
SELECT 1001,'b'
UNION ALL
SELECT 1001,'a'
UNION ALL
SELECT 1001,'b'
UNION ALL
SELECT 1002,'b'
UNION ALL
SELECT 1003,'a'
UNION ALL
SELECT 1004,'c'
--查询
SELECT Enqu,COUNT(DISTINCT infoSo) cnt FROM #tp
GROUP BY Enqu
--结果
Enqu cnt
a 2
b 2
c 1