Sql中使用With创建多张临时表

感情迁移 提交于 2019-11-28 20:32:28
CREATE PROC [dbo].[sp_VisitCount]
(
    @count INT
)
AS BEGIN
DECLARE @current DATETIME
SET @current=GETDATE();

WITH 
TodayVisitTable AS
(
    SELECT CorpName,COUNT(CorpName) AS TodayVisit
    FROM dbo.VisitRecords 
    WHERE YEAR(VisitTime)=YEAR(@current)
    AND MONTH(VisitTime)=MONTH(@current)
    AND DAY(VisitTime)=DAY(@current)
    GROUP BY CorpName
),
TotalVisitTable AS
(
    SELECT CorpName,COUNT(CorpName) AS TotalVisit
    FROM dbo.VisitRecords
    GROUP BY CorpName
),
QUERY AS 
(
    SELECT Row_number() OVER (ORDER BY TodayVisit DESC,TotalVisit DESC) AS RowNum,TotalVisitTable.CorpName,TodayVisit,TotalVisit
    FROM  TotalVisitTable
    LEFT JOIN TodayVisitTable ON TodayVisitTable.CorpName = TotalVisitTable.CorpName
)
SELECT RowNum,CorpName,ISNULL(TodayVisit,0) AS TodayVisit,TotalVisit
  FROM QUERY
 WHERE RowNum <= @count
 END

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!