【问题标题】:SQLite equivalent of Over (Partition)SQLite 相当于 Over (Partition)
【发布时间】:2018-04-05 11:20:13
【问题描述】:

我在 SQL Server 中有以下查询。该数据库现在正在使用 SQLite 的移动设备上使用。有人可以提供可以在 SQLite 中工作的等价物吗?

Select DISTINCT TblSites.Customer, TblSites.Digit, Count(TblContractTasks.TaskNumber) OVER (PARTITION BY TblSites.Digit)  As TaskCount 
FROM TblContractTasks INNER Join (TblSites INNER Join TblContractDetails On TblSites.Digit = TblContractDetails.SiteDigit) On TblContractTasks.ContractNumber = TblContractDetails.ContractNumber 
WHERE TblSites.Consultant='xx'  
ORDER BY TblSites.Digit

表:

Customer   Site   TaskNumber
------------------------
Ca          Sa      100
Ca          Sa      101
Cb          Sb      88
Ca          Sa      103

查询结果:

Customer    Site   TaskCount
-----------------------
Ca           Sa      3
Cb           Sb      1

【问题讨论】:

标签: sql sqlite window-functions


【解决方案1】:

您只是在寻找GROUP BY吗?

SELECT s.Customer, s.Digit, COUNT(*) As TaskCount 
FROM TblSites s INNER JOIN
     TblContractDetails cd
     ON s.Digit = cd.SiteDigit INNER JOIN
     TblContractTasks t
     ON t.ContractNumber = cd.ContractNumber 
WHERE s.Consultant = 'xx'  
GROUP BY s.Customer, s.Digit
ORDER BY s.Digit;

这将返回您指定的数据的结果集。它似乎比从 SELECT DISTINCTCOUNT() OVER 获得的结果集更有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多