用于识别当月的新订单项的逻辑

时间:2014-08-30 07:40:02

标签: sql sql-server

我正在尝试编写查询以查找出现在我的数据集中的新订单项。例如,我有以下表结构。

逻辑需要确定自上次billedmonth以来该订单项是否为新

表A

Table Structure

所以如果我用英文写的话。

选择IF'CLI'& '描述'& BilledMonth -1

不存在'UnitCost'

我已设法创建一个联接,显示上一个结算月是否存在。

但我真的很挣扎于负面逻辑(即这个月的订单项是新的)

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

SELECT t.CLI, t.Description 
FROM yourTable t
LEFT JOIN yourTable t2
ON t.CLI = t2.CLI
AND t.Description = t2.Description
AND t.UnitCost = t2.UnitCost
AND t.BilledMonth - 1 = t2.BilledMonth
WHERE t2.CLI is null

答案 1 :(得分:0)

我认为sql server支持分析函数,所以这样的东西应该可以工作:

select  CLI, Description, UnitCost, billedMonth
from (
    select  CLI, Description, UnitCost, billedMonth
        count(*) over (partition by CLI, Description, UnitCost order by billedMonth) cnt
    from mytable
) where cnt = 1

如果这是有效的,它很可能比基于连接的select语句更有效,更快。