gpt4 book ai didi

sql-server - 针对一个 CTE 进行多项选择

转载 作者:行者123 更新时间:2023-12-02 02:58:27 25 4
gpt4 key购买 nike

我有一个 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 在搜索方面所做的那样(人员搜索、职位搜索)

http://www.linkedin.com/search/fpsearch?type=people&keywords=sales+manager&pplSearchOrigin=GLHD&pageKey=member-home

速度如此之快,而且做同样的事情。

最佳答案

您不能使用多项选择,但可以使用多个这样的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com