sql - 在 SQL Server 中按查询从组中选择一列
问题描述
我在 SQL Server 中有这个查询,它具有我需要的所有条件和分组:
SELECT
PersonnelID, Name, EmpStartCalc,
MAX(PositionDetailsValidFromCalc) PD ,
MAX(PositionHierValidFromCalc) PH,
MAX(PWAValidFromCalc)
PWA,
MAX(RowId) AS RowId
FROM
TV_IAMintegration_VW
WHERE
EmpStartCalc >= 20200101
AND EmpStartCalc <= 20200131
AND ((20200131 > PositionHierValidFromCalc
GROUP BY
PersonnelID, Name, EmpStartCalc
ORDER BY
PersonnelID Asc
我得到的结果也有一些其他列也很重要,但我需要单独的 Rowids 才能从其他类似的表中再次获取完整的记录
SELECT *
FROM Tv_IAM_NumSequence
WHERE RowId IN ("Row Ids returned from the above query")
解决方案
-- Possibility 1
SELECT *
FROM Tv_IAM_NumSequence f1
inner join
(
SELECT
PersonnelID, Name, EmpStartCalc,
MAX(PositionDetailsValidFromCalc) PD ,
MAX(PositionHierValidFromCalc) PH,
MAX(PWAValidFromCalc) PWA,
MAX(RowId) AS RowId
FROM TV_IAMintegration_VW
WHERE
EmpStartCalc between 20200101 AND 20200131
AND PositionHierValidFromCalc < 20200131
GROUP BY PersonnelID, Name, EmpStartCalc
) f2
on f1.RowId =f2.RowId
-- Possibility 2
with f2 as (
SELECT
PersonnelID, Name, EmpStartCalc,
MAX(PositionDetailsValidFromCalc) PD ,
MAX(PositionHierValidFromCalc) PH,
MAX(PWAValidFromCalc) PWA,
MAX(RowId) AS RowId
FROM TV_IAMintegration_VW
WHERE
EmpStartCalc between 20200101 AND 20200131
AND PositionHierValidFromCalc < 20200131
GROUP BY PersonnelID, Name, EmpStartCalc
)
SELECT *
FROM Tv_IAM_NumSequence f1
inner join f2 on f1.RowId =f2.RowId
推荐阅读
- scala - 至少对于获取的批量数据,Spark-sql Pivoting 无法按预期工作
- azure - 为什么在为 Azure SQL 创建文件 DSN 时看不到我的数据库?
- rest - Artifactory REST API:如何有效地为用户获取权限目标
- java - 下面的代码每两秒打印一次静态系统时间,但我想每两秒打印一次动态系统时间
- android - React Native VLCPlayer RTSP 延迟(安卓版)
- python - 跨多个线程使用 Pika 通道
- python - 打印一个字符串,同时记录符号 % 之后的所有组件
- css - 如何在同一个容器中将标题居中对齐,文本左对齐?
- python - 加权页面排名图表示
- c# - SignedCms.decode() 在 c# 中做了什么