sql - 如何在 SQL Server 中获取具有不同 P1 等级的多个团队的人员
问题描述
TABLE 1 Table 2(Team Ratings)
ID Teamid Team Teamid Ratings
-------------------------- -------------------
1 TeamA null TeamA R1
2 Steve TeamA TeamB P1
3 Jacob TeamA TeamC Q1
4 Dierken TeamA
5 TeamB null
6 Julie TeamB
7 Jacob TeamB
8 Raki null
9 Balmer TeamC
任何人都可以帮助解决这个问题。我想从 Table1 中获取所有行,其人员条件是“团队 A 中具有 R1 评级的人员和不同团队中具有 P1 评级或任何其他评级的同一个人。
输出应该像
id TEamid Team Ratings
------------------------------------
1 Jacob TeamA R1
2 Jacob TeamB P1
解决方案
这将是另一种选择:
CREATE TABLE Teams
(
ID INT IDENTITY PRIMARY KEY
,Teamid VARCHAR(50)
,Team varchar(50)
)
GO
INSERT INTO TeamsRaitings
VALUES('TeamA','R1')
,('TeamB','P1')
INSERT INTO teams
VALUES('TeamA',nULL)
,('Steve','TeamA')
,('Jacob','TeamA')
,('Dierken','TeamC')
,('Steve','TeamA')
,('TeamB',nULL)
,('Julie','TeamB')
,('Jacob','TeamB')
,('Raki',NULL)
,('Balmer','TeamC')
;WITH TeamA AS (
SELECT a.ID
,a.Teamid
,a.Team
, raiting = CASE WHEN TEAM IS NULL THEN NULL ELSE 'R1' END
FROM teams a
WHERE A.Team = 'TeamA' OR A.Team IS NULL
),
AnotherTEam AS (
SELECT a.ID
,a.Teamid
,a.Team
,raiting = 'P1'
FROM teams a
WHERE A.Team <> 'TeamA'
AND EXISTS (SELECT top 1 1 FROM TeamA where A.Teamid= TeamA.Teamid)
)
SELECT ID
,Teamid
,Team
,raiting
FROM TeamA
UNION all
SELECT ID
,Teamid
,Team
,raiting
FROM ANOTHERTEAM
推荐阅读
- javascript - 如何在 Vue 中调用可重用组件上的方法
- angular - 配置我的应用程序以阻止它重写 URL?
- r - 我没有成功使用我想要的 LOCF 方法
- reactjs - 带有样式的材料 UI 与反应测试库抛出警告
- javascript - useReducer 中第三个参数的目的是什么?
- sql - 根据列出所需值的表列确定每个 ID 的缺失值
- spring-boot - Spring Boot - Json 到 Java 嵌套对象
- java - java电话簿数组如何添加新信息和显示旧信息
- python - sqlalchemy:父表和子表之间的“同步”jsonb列
- html - Mat-card 图像放置在 mat-card-content 旁边