SQLite 相当于 Over(分区)
SQLite equivalent of Over (Partition)
我在 SQL 服务器中有以下查询。该数据库现在正在使用 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
Table:
Customer Site TaskNumber
------------------------
Ca Sa 100
Ca Sa 101
Cb Sb 88
Ca Sa 103
查询结果:
Customer Site TaskCount
-----------------------
Ca Sa 3
Cb Sb 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;
此 returns 您指定数据的结果集。它似乎比您从 SELECT DISTINCT
和您的 COUNT() OVER
.
获得的结果集更有用
我在 SQL 服务器中有以下查询。该数据库现在正在使用 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
Table:
Customer Site TaskNumber
------------------------
Ca Sa 100
Ca Sa 101
Cb Sb 88
Ca Sa 103
查询结果:
Customer Site TaskCount
-----------------------
Ca Sa 3
Cb Sb 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;
此 returns 您指定数据的结果集。它似乎比您从 SELECT DISTINCT
和您的 COUNT() OVER
.