Sql 当有多行时如何使用sum函数

Sql 当有多行时如何使用sum函数,sql,Sql,预期产量 MSISDN Name y/N top cycle ActivationDate Bottom Provisioned renewdate 78 W1 N NA 24 3-Apr-15 th4 512 10-Apr-15 78 W1 N NA 24 3-Apr-15 th5

预期产量

MSISDN      Name    y/N     top     cycle   ActivationDate  Bottom  Provisioned  renewdate
78          W1      N       NA       24         3-Apr-15    th4         512     10-Apr-15
78          W1      N       NA       24         3-Apr-15    th5         256     17-Apr-15
78          W1      N       NA       24         3-Apr-15    th2         512     5-Apr-15
79          w2      Y       33       29         4-Apr-15    th5         1024    8-Apr-15
79          w2      Y       33       29         4-Apr-15    th4         2048    8-Apr-15
当我编写sql时,我能够根据名称查询sql for NA案例分组。
我们是否可以编写一个sql来满足这两个条件。当它必须汇总提供的所有数据时,您可以使用UNION来执行此操作:

MSISDN      Name    y/N     top     cycle   ActivationDate  Bottom  Provisioned  renewdate
78          W1      N       NA       24         3-Apr-15    null 1280-2048      null
79          w2      Y       33       29         4-Apr-15    th5         1024            8-Apr-15
79          w2      Y       33       29         4-Apr-15    th4         2048            8-Apr-15

那会让你接近的。但是,我不知道您如何通过查询在组中“配置”得到1280-2048。如果需要,您必须解释其中的逻辑以获得其他帮助。

是的,根据MSISDN总结,您如何确定何时使用其他列的值,而不是将非不同的值替换为null?例如,Name保持为W1,但Bottom变为null?另外,设置的列如何求和到1280-2048?如果top是NA,我可以将Bottom显示为null,并且设置的是分配给msisdn的所有值的总和,在本例中为512+512+25i6,该值应从2048中减去。即,1280-2048=768需要显示
SELECT MSISDN, Name, y/N, top, cycle, activationDate, NULL, Sum(PRovisioned), Null
FROM <table> 
WHERE top = 'NA'
GROUP BY  MSISDN, Name, y/N, top, cycle, activationDate

UNION ALL

SELECT MSISDN,Name,y/N,top,cycle,ActivationDate,Bottom,Provisioned,renewdate
FROM <table>
WHERE top <> 'NA'