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'