我有以下 T-SQL 语句:
;WITH DataSource ([ColumnA]) AS
(
SELECT TOP 100 [ColumnA]
FROM [dbo].[TEST]
WHERE [ColumnB] = 40
ORDER BY [ColumnC] DESC
)
SELECT [ColumnA]
,COUNT([ColumnA])
FROM DataSource
GROUP BY [ColumnA]
它根本不是返回相同的结果。我无法理解方式,但有时 CTE 中的 T-SQL 语句没有返回正确的值是因为产生了不同的结果,不是每次,而是有时(更准确地说,我得到三个不同的结果) .
如果我只执行以下语句:
SELECT TOP 100 [ColumnA]
FROM [dbo].[TEST]
WHERE [ColumnB] = 40
ORDER BY [ColumnC] DESC
我每次都得到相同的结果。如果我使用派生表也没有问题:
SELECT [ColumnA]
,COUNT([ColumnA])
FROM
(
SELECT TOP 100 [ColumnA]
FROM [dbo].[TEST]
WHERE [ColumnB] = 40
ORDER BY [ColumnC] DESC
) DataSource
GROUP BY [ColumnA]
谁能解释为什么 CTE 每次都没有返回正确的结果?