我有一个 CTE 查询来过滤表 Student
Student
(
StudentId PK,
FirstName ,
LastName,
GenderId,
ExperienceId,
NationalityId,
CityId
)
基于大量过滤器(多个城市、性别、多种经历(1、2、3)、多个国籍),我通过使用动态 sql 并将学生表与用户定义的表连接起来创建 CTE(城市表,国籍表,...
)
之后我必须通过每个过滤器检索学生的数量
CityId City Count
NationalityId Nationality Count
其他过滤器也是如此。
我可以做类似的事情吗
;With CTE(
Select
FROM Student
Inner JOIN ...
INNER JOIN ....)
SELECT CityId,City,Count(studentId)
FROm CTE
GROUP BY CityId,City
SELECT GenderId,Gender,Count
FROM CTE
GROUP BY GenderId,Gender
我想要像 LinkedIn 在搜索方面所做的那样(人员搜索、职位搜索)
速度如此之快,而且做同样的事情。
最佳答案
您不能使用多项选择,但可以使用多个这样的 CTE。
WITH CTEA
AS
(
SELECT 'Coulmn1' A,'Coulmn2' B
),
CETB
AS
(
SELECT 'CoulmnX' X,'CoulmnY' Y
)
SELECT * FROM CTEA, CETB
为了获取计数,请使用 RowNumber 和 CTE,有些人是这样想的。
ROW_NUMBER() OVER ( ORDER BY COLUMN NAME )AS RowNumber,
Count(1) OVER() AS TotalRecordsFound
如果您需要更多相关信息,请告诉我。
示例供您引用。
With CTE AS (
Select StudentId, S.CityId, S.GenderId
FROM Student S
Inner JOIN CITY C
ON S.CityId = C.CityId
INNER JOIN GENDER G
ON S.GenderId = G.GenderId)
,
GENDER
AS
(
SELECT GenderId
FROM CTE
GROUP BY GenderId
)
SELECT * FROM GENDER, CTE
关于sql-server - 针对一个 CTE 进行多项选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9682488/