group by子句

时间:2010-09-08 15:07:10

标签: sql sql-server-2005

我有一个名为table1的表,它有以下列。

假设有像localamount这样的记录是20,000,300,500,50000,那么根据我的条件我必须根据网站ID的集合从这个表中删除记录,直到id,transid,shift id localamount超过10,000 ...其他记录可以使用吗?

我的目的是根据网站ID从本表中删除本地金额超过10,0000的行,直到id,transid,shift id

    SiteId          varchar(10), 
    TillId          tinyint,
    ShiftId         int,
    TransId         int,
    TranDate        datetime,
    SettlementType  varchar(5),
    CreditCardNumber varchar(25),
    ProductTypeCode varchar(10),
    NewProductTypeCode varchar(10),
    TransactionType int,
    ForeignAmount   money,
    LocalAmount     money,
    ProductCode     varchar(10)

2 个答案:

答案 0 :(得分:1)

我不确定我明白你在说什么,但如果没有一个小组,你不能这样做吗?

delete from table1 where LocalAmount > 10,0000[sic] and SiteId = whatever and TillId = whatever...
显然需要[原文如此] ......

答案 1 :(得分:0)

假设您要删除总和为>的整个组。 10000

;with cte as
(
select sum(localamount) over
            (partition by siteid, tillid, transid,shiftid) as l,
* from table1 
)
delete from cte where l>10000