Sql server 如何在SQL Server中使用带计数的selfjoin?

Sql server 如何在SQL Server中使用带计数的selfjoin?,sql-server,count,Sql Server,Count,问题1: SELECT voter, COUNT(*) AS voter FROM TxVotes WHERE timestamp BETWEEN '2017-07-21 00:00:00.000' and '2017-07-22 00:00:00.000' GROUP BY voter ORDER BY COUNT(*) DESC 工作 问题2: SELECT author FROM Comments WHERE AND

问题1:

SELECT
    voter, COUNT(*) AS voter
FROM
    TxVotes
WHERE
    timestamp BETWEEN '2017-07-21 00:00:00.000' and '2017-07-22 00:00:00.000'
GROUP BY 
    voter
ORDER BY 
    COUNT(*) DESC
工作

问题2:

SELECT 
    author 
FROM
    Comments
WHERE
   AND language LIKE '%"ko"%'
工作

我需要查询3:

SELECT
    TxVotes.voter, TxVotes.count(*) AS TxVotes.voter
FROM
    TxVotes, Comments
WHERE
    TxVotes.voter = Comments.author
    AND timestamp TxVotes.BETWEEN '2017-07-21 00:00:00.000' AND '2017-07-22 00:00:00.000'
    AND Comments language LIKE '%"ko"%'
GROUP BY 
    TxVotes.voter
ORDER BY 
    TxVotes.count(*) DESC
但这不起作用

如何在SQL Server中使用带计数的自联接?

正确的语法是:

SELECT v.voter, COUNT(v.id) as numvoters
FROM TxVotes v JOIN
     Comments c
     ON t.voter = c.author 
WHERE v.timestamp >= '2017-07-21' AND
      v.timestamp < '2017-07-22' AND
      c.language LIKE '%"ko"%'
GROUP BY v.voter
ORDER BY COUNT(DISTINCT v.id);
我很确定,如果你想统计选民人数,或者是选票和评论的组合。我猜的是选民,所以是选民

注:

请勿在FROM子句中使用逗号。始终使用正确的显式联接语法。 我怀疑你是否想包括2017年7月22日午夜的记录。因此,>=和正确的语法是:

SELECT v.voter, COUNT(v.id) as numvoters
FROM TxVotes v JOIN
     Comments c
     ON t.voter = c.author 
WHERE v.timestamp >= '2017-07-21' AND
      v.timestamp < '2017-07-22' AND
      c.language LIKE '%"ko"%'
GROUP BY v.voter
ORDER BY COUNT(DISTINCT v.id);
我很确定,如果你想统计选民人数,或者是选票和评论的组合。我猜的是选民,所以是选民

注:

请勿在FROM子句中使用逗号。始终使用正确的显式联接语法。
我怀疑你是否想包括2017年7月22日午夜的记录。因此,>=并帮助我们帮助你-你能分享一些样本数据,你得到的结果和你试图得到的结果吗?你能附上错误消息吗?它不应该是txvoals.timestamp和Comments.language吗?帮助我们帮助你-你能分享一些样本数据吗,你得到的结果和你试图得到的结果?你能附上错误消息吗?它不应该是txvoters.timestamp和Comments.language吗?如果你计算不同的v.voter并按v.voter分组,计数不总是1吗?可能要计算不同的txvowers.PK_列?如果要计算不同的v.voter并按v.voter分组,计数不总是1吗?也许可以计算不同的txvots.PK_列?