我有一个案例,我有 2 个表,Customers
和 Transactions
.
很多客户可以组成一个客户群(记录在Customers
表中)。我需要显示 Customers
如果该组的所有客户都具有特定条件(数字列 xCol <> 5
),则单行中的某些总和(即每组)。如果其中任何一个(又名至少一个)有 xCol = 5
, 我需要显示所有客户而不是组。
客户表
Customer Group Customer Code
ALPHA GROUP A 1
BETA GROUP A 2
GAMMA GROUP A 3
DELTA GROUP B 4
LAMDA GROUP B 5
交易表
Customer Code xCol Amount
1 1 4
2 1 4
3 1 4
4 5 1
5 2 2
在上述情况下,我需要显示这些:
Customer Group Amount
----- GROUP A 12
DELTA GROUP B 1
LAMDA GROUP B 2
提前致谢
最佳答案
尝试:
with cte as
(select c.*,
t.Amount,
max(case xCol when 5 then 1 end) over (partition by c.[Group]) xCol5
from customers c
left join transactions t on c.[Customer Code] = t.[Customer Code])
select case xCol5 when 1 then [Customer Code] end [Customer Code],
[Group],
sum(Amount) Amount
from cte
group by [Group], case xCol5 when 1 then [Customer Code] end
关于sql - 如果条件适用则获取行否则单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15428026/