【发布时间】:2019-04-11 14:10:09
【问题描述】:
基本上我想得到两个计数。第一个计数是记录数。第二个计数是有数据的记录数。这两个计数来自名为调查的表,该表没有所有州名。所以我将它与另一个表 UsState 连接起来以获取所有状态名称。我整理了语法,但出现错误。
SELECT
Name as State,
count (*)from NamrsFrozen2017.Investigation2017 where FiscalYear = 2017 AND StateName in (SELECT distinct StateName FROM [NamrsFrozen2017].[Investigation2017] WHERE (not ReportDate = '' ))[Report Date Records],
count (*) from NamrsFrozen2017.Investigation2017 WHERE FiscalYear = 2017 AND ReportDate != '' AND StateName in (SELECT distinct StateName FROM [NamrsFrozen2017].[Investigation2017] WHERE (not ReportDate = '' ))[Report Date Records with Data]
From
(SELECT DISTINCT Name FROM NamrsFullDw.UsState) s
LEFT JOIN NamrsFrozen2017.Investigation2017 c ON s.Name = c.StateName AND c.FiscalYear = 2017
GROUP BY Name
Order by Name
【问题讨论】:
-
不要使用
COUNT(*),而是将列的名称放在函数之一的括号中。聚合函数不包含NULL值。SELECT COUNT(*),COUNT(I) FROM (VALUES(1),(2),(NULL))V(I);分别返回 3 和 2。 -
我不认为我理解您的回复,您能否澄清一下。我在名称和 s @Larnu 上收到错误
-
好吧,你不能这样做
SELECT Name, COUNT(*) FROM... AS {alias}, COUNT(*) FROM...,这没有意义。我们看不到您看到的内容,因此请发布一些示例数据和预期结果(text,不是图片)。 -
样本数据、所需结果以及对您想要做什么的解释会有所帮助。
标签: sql sql-server