这句sql如何写?(30分)

  • 主题发起人 主题发起人 peterwang
  • 开始时间 开始时间
P

peterwang

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一table如下:
x1 x2
1 1
2 1
3 2
4 2
5 3
6 3
7 3
希望用一个select语句得出x2中为1的有多少条记录,为2的有多少条记录
为3的有多少条记录?


 
试一试,没测试:
select count(x1) as cn1 where x2=1
union
select count(x1) as cn2 where x2=2
union
select count(x1) as cn3 where x2=3

 
抱歉,每个where前面忘了写form了.
 
select count(*) from table where x2=1 into :Num1
select count(*) from table where x2=2 into :Num2
select count(*) from table where x2=3 into :Num3
Num1..3分别为x2=1,2,3的个数

 
cAkk,高手就是高!!!:)
 
这不是3条select语句了吗? 况且,这种用法delphi不支持吧?
 
我想让它横着来,您老的方法是成了三条记录了。
 
agree with cAkk
 
就是想这样:
count(x1) (x2=1) (x2=2) (x3=3)
7 2 2 3
 
select x2,count(*)
from t1
group by x2
 
呵呵,lhxu才是高手哦! 我怎么忘了group by? :-P

不过还是不能排在同一行. :-(
 
不好意思,没看到后面的进一步说明
 
to lhxu:问题是如果x2中的值为0就不行了!
如:
x1 x2
1 1
2 1
3 2
4 2
5 3
6 3
7 3
8
9
这时当x2等于空时也要出2啊
 
to cakk:您老以前好象回答过同样的问题,我找不到了。
好象是用:
....count(select ...)什么的,您老好好想想
 
是吗? 可能我以前比现在还聪明点? :-)
我再想想吧!

回家吃饭喽!
 
>x2中的值为0就不行了?
为空不行?

我影像中 count(*) 是 算空行的

select count(*)
from t1
group by x2
试试

要不
update t1
set x2=-9999
where x2 = null
然后再...
办法不太好,亭听别人的高见把
 
to lhxu:您的方法也是竖者着的,能横过来吗?
 
看来想沾cAkk的光阴谋破产了,
哎,少壮不努力,老大涂伤悲...
 
to cakk:您老吃完饭了吗?
我在办公室等您的答案啊,我可饿昏了!
 
select sum(x2)/x2
from table
group by x2

上面一句便高顶了!
 
后退
顶部