我有一个有 2 列的表格,因此对于每笔贷款,字母 A、字母 B 或两者都将发送给贷款申请人。
我需要创建一个新列,设置 Flag =1(如果发送字母 A)、2(如果发送字母 B)和 3(如果发送字母 A 和字母 B),如下
我尝试了一种方法来为特定字母的每笔贷款生成行号,如下所示。然后我需要找到那些 ROW_NUM =1 次数大于 1 的行并分配一个标志
选择*, ROW_NUMBER() OVER(PARTITION BY LOAN_NO, Letter ORDER BY LOAN_NO) AS ROW_NUM FROM TableA。
有人可以帮助我继续使用此方法或任何替代方法来设置标志。
一种解决方案使用 CTE:
WITH CTE as
(
SELECT LOAN_NO, Count(*) as LoanCount, Max(Letter) as MaxLetter, Min(Letter) as MinLetter
FROM TableA
GROUP BY LOAN_NO
)
SELECT A.LOAN_NO, A.Letter,
CASE LoanCount
WHEN 1 THEN
CASE MaxLetter
WHEN 'LetterA' THEN 1
WHEN 'LetterB' THEN 2
ELSE 0 END
ELSE 3 END as Flag
FROM CTE C
INNER JOIN TableA A ON A.LOAN_NO=C.LOAN_NO
贷款_NO | 信 | 旗帜 |
---|---|---|
123 | 字母A | 3 |
123 | 字母A | 3 |
123 | 字母B | 3 |
123 | 字母B | 3 |
234 | 字母A | 1 |
345 | 字母B | 2 |