我在使用计数函数的 SQL 查询中遇到问题。
当我没有内部联接时,它算作 55 行。当我将内部联接添加到我的查询中时,它增加了很多。一下子变成了102行。
这是我的 SQL 查询:
SELECT COUNT([fmsStage].[dbo].[File].[FILENUMBER])
FROM [fmsStage].[dbo].[File]
INNER JOIN [fmsStage].[dbo].[Container]
ON [fmsStage].[dbo].[File].[FILENUMBER] = [fmsStage].[dbo].[Container].[FILENUMBER]
WHERE [fmsStage].[dbo].[File].[RELATIONCODE] = 'SHIP02'
AND [fmsStage].[dbo].[Container].DELIVERYDATE BETWEEN '2016-10-06' AND '2016-10-08'
GROUP BY [fmsStage].[dbo].[File].[FILENUMBER]
此外,我必须在 SELECT
语句中执行 TOP 1
,因为它返回 51 行,其中包含随机数。 (它们可能不是随机的,但我不知道它们是什么。)
我需要做什么才能让它只计算来自 [fmsStage].[dbo].[file].[FILENUMBER]
的行数?
最佳答案
首先,您的查询会像这样更清楚:
SELECT COUNT(f.[FILENUMBER])
FROM [fmsStage].[dbo].[File] f INNER JOIN
[fmsStage].[dbo].[Container] c
ON v.[FILENUMBER] = c.[FILENUMBER]
WHERE f.[RELATIONCODE] = 'SHIP02' AND
c.DELIVERYDATE BETWEEN '2016-10-06' AND '2016-10-08';
不需要 GROUP BY
。否则,每个文件编号只有一行,这似乎不如总计数有用。
注意:您可能需要 COUNT(DISTINCT f.[FILENUMBER])
。您的问题没有提供足够的信息来做出判断。
关于sql - COUNT 正在输出多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40239637/