我正在尝试编写 SQL 代码来获取出现在一行上的值出现在包含相似值的所有行上。下面是我当前拥有的示例,但需要一种方法来获取“批次状态”列以匹配同一批次 ID 下的所有行
批次ID | 测试ID | 状态 | 批次状态 |
---|---|---|---|
267 | 174 | 成功 | 空 |
267 | 175 | 成功 | 空 |
267 | 176 | 失败 | 失败 |
268 | 177 | 成功 | 空 |
268 | 178 | 成功 | 空 |
268 | 179 | 成功 | 成功 |
我需要它的样子:
批次ID | 测试ID | 状态 | 批次状态 |
---|---|---|---|
267 | 174 | 成功 | 失败 |
267 | 175 | 成功 | 失败 |
267 | 176 | 失败 | 失败 |
268 | 177 | 成功 | 成功 |
268 | 178 | 成功 | 成功 |
268 | 179 | 成功 | 成功 |
这是一些使用 CTE 的 SQL(我假设您正在使用
sql server
给定您的 powerbi
标签):
WITH BatchStatus AS (
SELECT
[Batch ID],
CASE
WHEN MAX([Batch Status]) = 'FAIL' THEN 'FAIL'
WHEN MAX([Batch Status]) = 'SUCCESS' THEN 'SUCCESS'
ELSE NULL
END AS NewBatchStatus
FROM BatchDetails
GROUP BY [Batch ID]
)
SELECT
bd.[Batch ID],
bd.[Test ID],
bd.[Status],
bs.NewBatchStatus AS [Batch Status]
FROM BatchDetails bd
JOIN BatchStatus bs
ON bd.[Batch ID] = bs.[Batch ID];
假设: