我有一张如下所示的桌子
日期 | 帐单号 | 类别 |
---|---|---|
2024年9月30日 | 1 | VSS |
2024年10月1日 | 2 | RSS |
2024年10月1日 | 3 | VSS |
2024年10月1日 | 3 | RSS |
2024年10月1日 | 4 | RSS |
2024年10月1日 | 4 | RSS |
我需要像下面这样的新类别
日期 | 帐单号 | 类别 | 新类别 |
---|---|---|---|
2024年9月30日 | 1 | VSS | VSS |
2024年10月1日 | 2 | RSS | RSS |
2024年10月1日 | 3 | VSS | VSS |
2024年10月1日 | 3 | RSS | VSS |
2024年10月1日 | 4 | RSS | RSS |
2024年10月1日 | 4 | RSS | RSS |
注意:如果账单日期相同且账单编号重复且类别不同,则考虑 VSS。
我试过了
SELECT Date, BillNo, Category
, case when [Category]='VSS' then 'VSS' else 'RSS' end [New CATEGORY]
FROM TBL
如果结果行的条件引用表的其他行,您应该将原始查询与提供该条件的第二个查询结合起来。尝试这样的事情:
select
TBL.Date, TBl.BillNo, TBL.Category,
case when DIFF.NewCategory = 'VSS' then 'VSS' else TBL.Category end NewCategory
from TBL left outer join (
select Date, BillNo, 'VSS' NewCategory
from TBL
group by Date, BillNo
having count(distinct Category) > 1
) DIFF
on TBL.Date = DIFF.Date and TBL.BillNo = DIFF.BillNo