按组外的列排序
Order by Column Outside of Group By
我试图按我不想在 Group By
子句中使用的列进行排序。
所以这里的想法是能够通过这个FileId
来订购。
SELECT FileGuid, FileName, ROW_NUMBER() OVER(Order by FileId) AS rownum
FROM dbo.FileImport
GROUP BY FileGuid, FileName
ORDER BY rownum
现在我收到这个错误:
Column 'dbo.FileImport.FileId' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
但是如果我将其包含在分组依据中,我将获得与该 FileGuid 关联的每个文件的记录,这是我不希望发生的。在此先感谢您提供有关如何使它正常工作的任何意见。
你可以试试这个:
SELECT * FROM
(SELECT FileGuid, FileName, ROW_NUMBER() OVER(Partition by FileGuid, FileName
Order by FileId) AS rownum
FROM dbo.FileImport) X
WHERE rownum = <<your condition>>
ORDER BY X.FileGuid,X.FileName,X.rownum
通过添加外部 where 子句,任何类型的过滤器都可以应用于 rownum。
您必须决定您关心哪个 fileid
。然后你可以使用聚合函数:
SELECT FileGuid, FileName, ROW_NUMBER() OVER (Order by MIN(FileId)) AS rownum
FROM dbo.FileImport
GROUP BY FileGuid, FileName
ORDER BY rownum;
您可以使用此 SQL 语句。
Select *
From
(
SELECT T.FileGuid, T.FileName, ROW_NUMBER() OVER(Order by T.FileId) AS rownum
from (
SELECT FileGuid, FileName, Max(FileID) As FileID
FROM dbo.FileImport
GROUP BY FileGuid, FileName
)T
)Temp
order by Temp.rownum
如有问题请告诉我!
我试图按我不想在 Group By
子句中使用的列进行排序。
所以这里的想法是能够通过这个FileId
来订购。
SELECT FileGuid, FileName, ROW_NUMBER() OVER(Order by FileId) AS rownum
FROM dbo.FileImport
GROUP BY FileGuid, FileName
ORDER BY rownum
现在我收到这个错误:
Column 'dbo.FileImport.FileId' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
但是如果我将其包含在分组依据中,我将获得与该 FileGuid 关联的每个文件的记录,这是我不希望发生的。在此先感谢您提供有关如何使它正常工作的任何意见。
你可以试试这个:
SELECT * FROM
(SELECT FileGuid, FileName, ROW_NUMBER() OVER(Partition by FileGuid, FileName
Order by FileId) AS rownum
FROM dbo.FileImport) X
WHERE rownum = <<your condition>>
ORDER BY X.FileGuid,X.FileName,X.rownum
通过添加外部 where 子句,任何类型的过滤器都可以应用于 rownum。
您必须决定您关心哪个 fileid
。然后你可以使用聚合函数:
SELECT FileGuid, FileName, ROW_NUMBER() OVER (Order by MIN(FileId)) AS rownum
FROM dbo.FileImport
GROUP BY FileGuid, FileName
ORDER BY rownum;
您可以使用此 SQL 语句。
Select *
From
(
SELECT T.FileGuid, T.FileName, ROW_NUMBER() OVER(Order by T.FileId) AS rownum
from (
SELECT FileGuid, FileName, Max(FileID) As FileID
FROM dbo.FileImport
GROUP BY FileGuid, FileName
)T
)Temp
order by Temp.rownum
如有问题请告诉我!