这句sql如何写?(30分)

  • 主题发起人 主题发起人 peterwang
  • 开始时间 开始时间
粗人:不顶不顶!因为x2是char型。
 
TRANSFORM Count([x1]) AS 值
SELECT "x"
FROM t1
GROUP BY "x"
PIVOT [x2];

/// 我在access 中做的完全符合你的要求
 
energy:不掂不掂,我是在sql7中的。
 
吃完饭了,但是没想出来 --- 白吃了... :-(
 
cAkk,peterWang,别急嘛,首先我的做法在access中肯定是对的。
所以最起码,你可以在access中做个链接表,然后做查询。
至于sql7嘛,我记得也有这个功能。但我要转到sql7得关机
启动选nt进入,我的猫是pctel 的 k56flex hsp-pci 在nt下奇慢
无比,至今查不出原因。呵呵 ,我一定帮你解决。
 
Energy: 你的语句确实在access上通过.
能给我们讲讲transform的用法吗?别抄access的帮助,我看了,很难懂.
你用你自己的经验给我们讲一讲好吗? 有200分赠送!
 
有了,有了,就是烦些;
先 建立一个存储过程
建立一个临时表
再select x2,count(*)
from t1
group by x2
再循环取值
再alter column add 增加一个列,列名就是上面的值
把count的值赋给第一行。
循环
输出临时表

以后只要用一句话就可以了,我想access内部也是这么做的。
不用我将有个向导叫交叉表查询,你做一遍就明白了。
 
怎样调出这个向导?
 
开始-access-db1.mdb-查询-新建-交叉表查询先导->
 
ok,我学学先.
 
PeterWang为何不用一个View?
方便省事,少费脑筋。
 
不对,应该是Procedure
 
这种问题不就是一个矩阵旋转的问题吗,
我在别的问题中已答过了,不好意思,
记不起来在哪儿了,但肯定在一类问题中
 
to Energy:这个存储过程怎么建?很多书上就只有怎么调用,可没怎么建,我一直
想学,可投师无门,现向您拜师!!!(sql的帮助看不明白,因为E文差。)您
有没有建的Step by step,和例子?
to spear:您的答案在哪?我找不着啊!!
 
用不着这么麻烦,
我看这样就可以了:

select a.x2 "count(x1)",b.x2 "(x=1)",c.x2 "(x=2)",d.x2 "(x=3)"
from
(select count(*) x2 from aaaa where x2=1 or x2=2 or x2=3) a,
(select count(*) x2 from aaaa where x2=1) b,
(select count(*) x2 from aaaa where x2=2) c,
(select count(*) x2 from aaaa where x2=3) d

以上语句在ORACLE中肯定可以执行,而且是横向显示的。
因为别名中有COUNT(x1),它是ORACLE的保留字,所以只好用双引号括起来。
在SQL SERVER中,别的用法没什么问题,但是双引号的用法可能会有问题。
若有问题,你将这几个别名改一下就可以了。
 
select (select count(*) from t1),
(select count(*) from t1 where x2=1),
(select count(*) from t1 where x2=2),
(select count(*) from t1 where x2=3)
 
yck,kwang的方法可行!
 
后退
顶部