感觉不算太难的问题整了N久也不成,初学SQL见笑.具体问题如下:
表t1:
src  dst
1    1
1    0
1    1
0    0
1    0
要求生成这样的一个新表
cs   cd
4    2
即各列中数据为1的行数统计
想用两个select语句分别查出4和2再inner join,但语法也写不对,还是根本不能这样写也不知道
因为还有其他的字段我省略了,而且程序要求以SQL语句为参数执行一个模块,所以一定要用一条语句,请各位来帮忙看看

解决方案 »

  1.   

    select sum(src) as cs,sum(dst) as cs  from t1
      

  2.   

    哈哈,搞定了
    SELECT *
    FROM (SELECT COUNT(src) AS cs
            FROM t1
            WHERE (src = 1)) a CROSS JOIN
              (SELECT COUNT(dst) AS cd
             FROM t1
             WHERE (dst = 1)) b
    不过这种写法怎么都觉得不好,期待楼下的,还有90分没送出去呢
      

  3.   

    算了,上面的就这样吧,复杂点的用outer join就可以了,剩下的90分问个信问题:
    通过上面的类似方法我得到了两个子表型如:
    table1:        table2:
         min             min
    ...  1  ...     ...  2  ...
    ...  3  ...     ...  2  ...
    现在我要"横向"统计最小值,得到这样的表
         min
    ...  1 ...
    ...  2 ...
    如上,不知道说清楚没有
      

  4.   

    insert into newtable(cs int,cd int) select sum(src ),sum( dst) from old table
      

  5.   

    不是求sum啊,我写1只是省事儿
    up一下,没人知道横向统计吗?
      

  6.   

    delcare @src,@dst;
    select @src=count(src) from t1 while src='1' and 
    select dst=count(dst) from t1 while dst='1';
    insert into newtable(cs,cd) values(@src,@dst);
    看这样行不