Msssql在按另一列分组时分配非空值

时间:2017-03-26 21:14:30

标签: sql sql-server

我有以下txn_table表:

Code      Category      Date    TicketRevenue  SnackRevenue  BeverageRevenue
A11       AA            8/14        100             80             60
AT201     BB            8/19        300             150            100
AT201     NULL          8/19        50              50             40 

我想获取数据,以便显示收入列的总和,按列列出:代码。如果类别列对于具有相同code的行之一具有NULL(例如,2个AT201条目中的类别不同),我希望在该点中分配BB(非空)值。对于每个代码,类别只能有两个可能的值,即非NULL和空值。

示例布局:

Code      Category      Date    TicketRevenue  SnackRevenue  BeverageRevenue
AMC       AA            8/14        100             80             60
AT201     BB            8/19        350             200           140

我知道如何在不区分时添加空值但是可能会在那里获得非空值吗?

select Code, if(count(distinct Category)=1, Category, NULL), Date,sum(TicketRevenue),sum(SnackRevenue), sum(BeverageRevenue)
from txn_table
group by Code

参考:已从此question 借用了值和查询

1 个答案:

答案 0 :(得分:1)

您可以使用max(或min)从给定的列或表达式返回最大非空值。

select Code,
    max(Category),
    date,
    sum(TicketRevenue),
    sum(SnackRevenue),
    sum(BeverageRevenue)
from txn_table
group by Code