以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  问一条SQL语句  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=21525)

--  作者:blackzhu
--  发布时间:2012/7/16 8:40:00
--  问一条SQL语句
  有两个表:

  一个是明细表      字段有条形码      数量

 一个是统计表       字段有条形码      排名


  我想在统计表里面输入一个相对应的条形码   排名根据明细表的数量总和进行自动排名


  这个SQL语句怎么写?
[此贴子已经被作者于2012-7-16 8:40:07编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/7/16 8:52:00
--  
一个条形码,怎么自动排名?
--  作者:blackzhu
--  发布时间:2012/7/16 9:26:00
--  
明细表里面是详细的数据  当然有N多条的 商品条码 

举个例子:

明细表:

条码    数量
001     50
001     100
001     300
002     50
002     50
002     50



那么我在统计表里面输入:
条码      排名
001       1
002       2     这个排名是根据数量来排名的


--  作者:blackzhu
--  发布时间:2012/7/16 10:10:00
--  
唉,算了还是加了个辅助列解决了.
--  作者:飞
--  发布时间:2012/7/16 10:30:00
--  

--SQL 2005以上版本

SELECT 排名

FROM

(

    SELECT 条形码,ROW_NUMBER() OVER(ORDER BY SUM(数量)) AS 排名

    FROM  明细表

    GROUP BY 条形码

) A

WHERE 条形码 = \'002\'


--  作者:飞
--  发布时间:2012/7/16 10:30:00
--  
--Access及所有SQL版本通用

SELECT COUNT(1) AS 排名 FROM

(

    SELECT TOP 100 PERCENT 条形码,SUM(数量) AS 合计

    FROM  明细表

    GROUP BY 条形码

    ORDER BY SUM(数量)

) A

WHERE A.合计 > =

(

    SELECT 合计 FROM

    (

        SELECT TOP 100 PERCENT 条形码,SUM(数量) AS 合计

        FROM  明细表

        GROUP BY 条形码

        ORDER BY SUM(数量)

    ) A

    WHERE A.条形码 = \'002\'

)


--  作者:blackzhu
--  发布时间:2012/7/16 10:59:00
--  
谢谢  飞  为什么是top100  ,不明白了.


我用辅助列解决了.

--  作者:lihe60
--  发布时间:2012/7/16 11:03:00
--  

飞真是SQL高手。