【发布时间】:2022-01-09 11:26:55
【问题描述】:
我在一个如下所示的表中有一些数据。我正在尝试运行一个查询,该查询将在每个 requestId 的单行上获取我的数据。我不需要日期或拒绝原因,只需要每个 groupId 的 eprojman 和 apvStatus
requestId - projMan1 - apvStatus1 - projMan2 - apvStatus2 - projMan3 - apvStatus3 等.. 对于所有 5 个 groupIds
| requestId | groupId | entryDate | approvalDate | apvStatus | projMan | denialReason |
|---|---|---|---|---|---|---|
| 1 | 1 | 2020-11-02 | 2019-07-25 | APPROVED | rx1942 | NULL |
| 1 | 2 | 2020-11-02 | 2019-07-25 | APPROVED | ma2674 | NULL |
| 1 | 3 | 2020-11-02 | 2019-07-25 | APPROVED | cb9097 | NULL |
| 1 | 4 | 2020-11-02 | 2019-07-25 | APPROVED | bj1763 | NULL |
| 1 | 5 | 2020-11-02 | 2019-07-25 | APPROVED | tr5972 | NULL |
| 2 | 1 | 2020-11-02 | NULL | NOT APPROVED | NULL | 6 |
| 2 | 2 | 2020-11-02 | NULL | PENDING | ma2674 | NULL |
| 2 | 3 | 2020-11-02 | NULL | PENDING | cb9097 | NULL |
| 2 | 4 | 2020-11-02 | NULL | PENDING | bj1763 | NULL |
| 2 | 5 | 2020-11-02 | NULL | PENDING | tr5972 | NULL |
我一直在尝试使用 PIVOT 表,但我发现的所有示例都涉及汇总数据或其他内容。我只是非常想把 5 行变成每个 requestID 的 1 行
我唯一能想到的就是从同一个表中为每个 groupID 选择 5 次并将其合并,但这比见鬼要慢。必须是更好的方法
谢谢。
当前查询:
select group1.requestId
, group1.apvStatus as apvStatus1
, group1.projMan as projMan1
, group2.apvStatus as apvStatus2
, group2.projMan as projMan2
, group3.apvStatus as apvStatus3
, group3.projMan as projMan3
,group4.apvStatus as apvStatus4
, group4.projMan as projMan4
,group5.apvStatus as apvStatus5
, group5.projMan as projMan5
,group1.denialReason
INTO #TEMPBAOrganized
from (
select requestId, apvStatus, projMan, denialReason from #TEMPBULKAPPROVAL where groupId = 1) group1
INNER JOIN
(select requestId, apvStatus, projMan, denialReason from #TEMPBULKAPPROVAL where groupId = 2) group2
on group1.requestId = group2.requestId
INNER JOIN
(select requestId, apvStatus, projMan from #TEMPBULKAPPROVAL where groupId = 3) group3
on group1.requestId = group3.requestId
INNER JOIN
(select requestId, apvStatus, projMan from #TEMPBULKAPPROVAL where groupId = 4) group4
on group1.requestId = group4.requestId
INNER JOIN
(select requestId, apvStatus, projMan from #TEMPBULKAPPROVAL where groupId = 5) group5
on group1.requestId = group5.requestId
【问题讨论】:
-
请不要张贴图片,使用格式化文本。还包括您当前的查询
标签: sql sql-server tsql