我的是SQL SERVER 2000 刚学SQL不久。还请大家多关照。
 
USE PUBS
select s1.qty,count(s2.qty) 
from sales s1,sales s2
where s1.qty<=s2.qty
group by s1.qty
order by s1.qty desc运行的结果如下
75 1
50 2
40 3
35 4
30 5
25 36
20 52
15 48
10 57
5 20
3 21
我怎么感觉结果不对,总共才21条记录。大家帮忙看下。

解决方案 »

  1.   

    你想要几个?where s1.qty<=s2.qty限定了就这几个
      

  2.   

    由于这儿的人大多数都没有PUBS数据库,你最好贴出数据.
      

  3.   

    你可以这样:
    select qty 
    from sales
    看它有几条记录.
      

  4.   

    qty (无列名)
    75 1
    50 2
    40 3
    35 4
    30 5
    25 36
    20 52
    15 48
    10 57
    5 20
    3 21
    语法没错误,看不出有什么作用。
      

  5.   

    where s1.qty<=s2.qty两个表关联为什么用<=呢
      

  6.   

    select s1.qty,count(s2.qty) 
    from sales s1
    left outer join sales s2 ON s1.qty=s2.qty
    group by s1.qty
    order by s1.qty desc
    这样会不会好点呢?
      

  7.   

    select qty,count(*)重复次数 from sales group by qty
    /*
    qty    重复次数        
    ------ ----------- 
    3      1
    5      1
    10     3
    15     3
    20     4
    25     4
    30     1
    35     1
    40     1
    50     1
    75     1(所影响的行数为 11 行)
    */
    上面10、15、20、25均有重复记录,所以连接的记录数都翻了3倍或3倍
      

  8.   

    select s1.qty,count(s2.qty)  
    from sales s1
    left outer join sales s2 ON s1.qty=s2.qty
    group by s1.qty
    order by s1.qty desc
      

  9.   

    谢谢大家关照
    补充下。sales中qty 的数据记录如下
    qty
    5
    3
    50
    75
    10
    40
    20
    20
    20
    25
    20
    25
    15
    25
    15
    10
    35
    15
    10
    25
    30
      

  10.   

    这样很正确的,你是把1个表当做2个使用;表中的数据由于20 ,25 都不是唯一的,所以出现了这种现象,
    qty    (无列名)
    75    1
    50    2
    40    3
    35    4
    30    5
    25    36
    20    52
    15    48
    10    57
    5    20
    3    21
      

  11.   

    哈哈,我自己解决了,原来排序时,如果,被排序的列有重复值时,必须加上一列为unique的列做为参照。