T-SQL中的第一个聚合函数

时间:2015-11-25 15:14:20

标签: sql sql-server tsql

我正在创建一个数据库来管理办公室计算机的办公室许可。我们经常重新映像它们并且必须跟踪我们使用的密钥。

我有三张桌子; LicenseKeyTB,SeatsAvailableTB和ProductTB。 ProductTB包含产品名称和唯一密钥。一个产品将有多个许可证密钥。

许可证密钥表将包含许可证密钥,对productTB的引用以及对SeatsAvailableTB的引用。

有一定数量的座位可用于一组许可证密钥。例如。对于Office 2010和Office 2013,我们有10个席位可用于2个不同的许可证密钥。因此,我们可以提供6个2010年许可证和4个2013年许可证,反之亦然,但我们不能超过10个。

我需要为每个产品选择第一个许可证密钥,并提供一定数量的席位。

就我而言:

*|USERNAME|*

此语句选择每个产品的第一个许可证密钥。我需要的是选择产品名称,第一个许可证密钥和座位可用的座位数至少一定数量。

1 个答案:

答案 0 :(得分:1)

也许加入SeatsavaibleTB?

GO
select
    *
from RX.ProductTB p

JOIN(
    SELECT l.*,
    row_number() over (Partition By l.ProductID Order By l.ProductID) as Ranking
    From RX.LicenseKeyTB l
    join RX.SeatsAvailableTB s ON l.reference = s.id
    WHERE s.number > 0
    ) as LicenseRanking
    on LicenseRanking.ProductID = p.ProductID and LicenseRanking.Ranking = 1
GO

这样,排名1的ProductID将具有SeatsAvailableTB.number> 0