Sql 子查询,其中我可以计算名称在第一个查询中出现的次数

Sql 子查询,其中我可以计算名称在第一个查询中出现的次数,sql,sql-server,subquery,Sql,Sql Server,Subquery,这是我的当前代码: select Name, ECU, Identifier, Value, Max(Filetime) as "Filetime" from dbo.view_1 where ECU='EBS7' and Identifier='88' and Value='2459579' or identifier ='87' and Value='2431629' group by Name, ECU, Identifier, Value ORDER BY MAX(Name) A

这是我的当前代码:

select Name, ECU, Identifier, Value, Max(Filetime) as "Filetime"
from dbo.view_1
where ECU='EBS7' and Identifier='88' and Value='2459579' or identifier ='87' and Value='2431629'
group by Name, ECU, Identifier, Value
ORDER BY
    MAX(Name) ASC 
这是我得到的结果:

我想要某种子查询或计算名称出现多少次的东西。我们可以看到阿贡出现了两次,而阿波罗阿克卡只出现了一次


有关于我应该写什么的提示吗?

您可以使用相关子查询:

Select Name, ECU, Identifier, Value,
       Max(Filetime) as "Filetime",
       (select count(*)
       from dbo.view_1 t2 
       where t2.Name = t1.Name and
             ECU ='EBS7' and 
             ((Identifier='88' and Value='2459579') or 
             (identifier ='87' and Value='2431629')) as cnt
from dbo.view_1 t1
where ECU ='EBS7' and 
      ((Identifier='88' and Value='2459579') or 
      (identifier ='87' and Value='2431629'))
group by Name, ECU, Identifier, Value
ORDER BY MAX(Name) ASC 
我不知道MySQL(您实际使用的是哪种产品?),但在MS-SQL中

ORDER BY MAX(Name) ASC
甚至不会编译。不能按不在“选择”列表中的列排序

如果要获取原始结果集,且名称在集合中的频率为本身,并且使用MS-SQL,则可以使用CTE:

WITH theset AS 
(select Name, ECU, Identifier, Value, Max(Filetime) as "Filetime"
from dbo.view_1
where ECU='EBS7' and Identifier='88' and Value='2459579' or identifier ='87' and Value='2431629'
group by Name, ECU, Identifier, Value)

SELECT set.*,CountNames.NameCount
FROM
    theset set
INNER JOIN
    (SELECT Name,Count(*) AS NameCount FROM theset GROUP BY Name) CountNames
ON set.Name=CountNames.Name

您使用的是MySQL还是MS SQL Server?(不要标记未涉及的产品…)您的和/或使用可能需要一些括号?谢谢,但cnt显示了错误的值。Agon名称Agon出现2次,但cnt显示它出现561次。对于Aisa cnt是564。@AdnanHossain,我忘记在子查询的
WHERE
子句中包含其他谓词。请检查我所做的编辑。仍然不起作用。根据cnt,Agon出现39次,其余的继续。@AdnanHossain在这种情况下,您的谓词有问题。您应该考虑在<代码>中添加括号:子句。检查我所做的编辑,看看它是否有帮助。编辑有帮助,它显示了许多车辆的权利。但这是一个小错误。有些车辆显示为cnt=2,即使它们只列出一次。我使用的是ms sql 2014版本。按最大值(名称)排序的asc实际上起作用。因为我有一个groupby,所以我需要一些聚合函数来使用orderby。这样,列表按名称排序。谢谢,我会试试你的代码!ORDERBY Max(名称)可能“起作用”,因为它可以编译,但它毫无意义。当名称已经在GROUPBY子句中时,集合中的每个成员的名称将按公理始终=MAX(名称)。orderbymax(Name)等同于orderby(Name),而且容易混淆,所以我建议将其删除。现在让我看看CTE代码是否在
Select set.*、CountNames.namecont
ON set.Name=CountNames.Name
上的编译错误,它是这样说的。是不正确的语法。可能我将CTE别名为“set”,忘记了这是SQL保留字。将它别名为其他名称,这应该可以修复它。谢谢,它成功了!如果我只想展示所有名称计数为2或更大的车辆,我该怎么做?某种有语句的