我在想这个语句将会并且应该从我的表中选择不同的值,然后对它们进行计数,或者至少这是我想要在单独的列中。是否有可能计算SQL中不同值的数量,从我收集的可能不是。
问题:我可以计算姓氏的不同值的数量吗?
SQL语句:
select distinct c.LastName as 'Distinct Last Names', COUNT(*)
from Customer as c;
Msg 8120, Level 16, State 1, Line 1
Column 'Customer.LastName' is invalid in the select list because it is not contained
in either an aggregate function or the GROUP BY clause.
LTest1 LTest2 LTest3
答案 0 :(得分:3)
由于您在查询中没有Group by
子句,Select
中的所有列都应使用某种聚合,否则SQL
将不满意。< / p>
试试这个
select COUNT(distinct c.LastName) 'Distinct Last Names'
from Customer as c;
答案 1 :(得分:1)
如果我正确理解您的问题,您希望将结果分为两列。
如果是,您可以使用 Group By 。
SELECT c.LastName as 'Distinct Last Names', COUNT(*)
FROM Customer as c
GROUP BY c.LastName
答案 2 :(得分:0)
我会使用子查询。内部查询返回姓氏的distict列表。外部查询计算distict值。我更喜欢count(1)而不是count(*),因为不需要返回customer表中所有列的元数据。
SELECT COUNT(1)
FROM (
SELECT DISTINCT LASTNAME
FROM CUSTOMER
) a