sql-server 如果A列中的值相同,而其他值等于,则将X放入另一列

jfewjypa  于 2022-10-31  发布在  其他
关注(0)|答案(1)|浏览(175)

我有这样的东西...
| 航班号|类别|座位数|已售罄|
| - -|- -|- -|- -|
| 10个|A级|第0页||
| 10个|B|五个||
| 10个|C类|十五个||
| 10个|D级|二十五个||
我想写一条语句,其中FlightNum相同,A舱有0个座位,该FlightNum的所有行都应在“已售出”列中放置“1”。
| 航班号|类别|座位数|已售罄|
| - -|- -|- -|- -|
| 10个|A级|第0页|一个|
| 10个|B|五个|一个|
| 10个|C类|十五个|一个|
| 10个|D级|二十五个|一个|
除了case语句,我真的不知道从哪里开始,所以我在寻找一些指导。

sgtfey8w

sgtfey8w1#

我们检查Class = 'A' and Seats = 0,然后我们使用count窗口函数(由FlightNum分隔)将结果提供给整个飞行。

select  *
       ,count(case when Class = 'A' and Seats = 0 then 1 end) over(partition by FlightNum) as SoldOut
from    t

| 航班号|类别|座位数|已售罄|
| - -|- -|- -|- -|
| 10个|A级|第0页|一个|
| 10个|B|五个|一个|
| 10个|C类|十五个|一个|
| 10个|D级|二十五个|一个|
Fiddle

相关问题