Sql server 显示每个类别的sum()的列
我想要一个列,显示每个类别(90岁以上、60岁以上、30岁以上)的总和(金额) 试试这个Sql server 显示每个类别的sum()的列,sql-server,stored-procedures,Sql Server,Stored Procedures,我想要一个列,显示每个类别(90岁以上、60岁以上、30岁以上)的总和(金额) 试试这个 DECLARE @DATE VARCHAR(10) SET @DATE='2012-12-31' SELECT TRANDATE, TRANTYPE, INVNUM,SUM (AMOUNT), PAID, CLIENTID, SUM((CASE WHEN TRANDATE <= DATEADD(dd, -90, @DATE) THEN AMOUNT END )) AS 'OVER
DECLARE @DATE VARCHAR(10)
SET @DATE='2012-12-31'
SELECT TRANDATE, TRANTYPE, INVNUM,SUM (AMOUNT), PAID, CLIENTID,
SUM((CASE WHEN TRANDATE <= DATEADD(dd, -90, @DATE) THEN AMOUNT END )) AS 'OVER 90',
SUM((CASE WHEN TRANDATE>DATEADD(dd, -90, @DATE) AND TRANDATE<=DATEADD(dd, -60, @DATE) THEN AMOUNT END)) AS 'OVER 60' ,
SUM((CASE WHEN TRANDATE>DATEADD(dd, -60, @DATE) AND TRANDATE<=DATEADD(dd, -30, @DATE) THEN AMOUNT END))AS 'OVER 30' ,
SUM((CASE WHEN TRANDATE>DATEADD(dd, -30, @DATE) THEN AMOUNT END)) AS 'CURRENT'
from Bill
where TRANTYPE IN ('INV', 'PAY') AND TRANDATE<=@DATE AND CLIENTID=7434
GROUP BY TRANDATE, TRANTYPE, INVNUM, PAID, CLIENTID
DECLARE@DATE VARCHAR(10)
设置日期为2012年12月31日
选择TRANDATE、TRANTYPE、INVNUM、SUM(AMOUNT)、PAID、CLIENTID、,
金额((当TRANDATE DATEADD(dd,-90,@DATE)和TranDateAdd(dd,-60,@DATE)以及TranDateAdd(dd,-30,@DATE)和金额结束时的情况)为“当前”
来自比尔
其中,输入('INV','PAY')和输入日期将案例语句包装在一个总和中
:
DECLARE @DATE VARCHAR(10)
SET @DATE='2012-12-31'
SELECT TRANDATE, TRANTYPE, INVNUM,SUM (AMOUNT), PAID, CLIENTID,
SUM(CASE WHEN TRANDATE <= DATEADD(dd, -90, @DATE) THEN AMOUNT END ) AS 'OVER 90',
SUM(CASE WHEN TRANDATE<DATEADD(dd, -90, @DATE) AND TRANDATE<=DATEADD(dd, -60, @DATE) THEN AMOUNT END) AS 'OVER 60' ,
SUM(CASE WHEN TRANDATE<DATEADD(dd, -60, @DATE) AND TRANDATE<=DATEADD(dd, -30, @DATE) THEN AMOUNT END) AS 'OVER 30' ,
SUM(CASE WHEN TRANDATE<DATEADD(dd, -30, @DATE) THEN AMOUNT END) AS 'CURRENT'
from Bill
where TRANTYPE IN ('INV', 'PAY') AND TRANDATE<=@DATE AND CLIENTID=7434
GROUP BY TRANDATE, TRANTYPE, INVNUM, PAID, CLIENTID
DECLARE@DATE VARCHAR(10)
设置日期为2012年12月31日
选择TRANDATE、TRANTYPE、INVNUM、SUM(AMOUNT)、PAID、CLIENTID、,
SUM(当TRANDATE写一个查询时,不使用分组CASE语句来获取其中包含值的计算列
“90岁以上”、“60岁以上”、“30岁以上”根据记录,命名任何列,例如MySection
然后查询并将此查询分组为一个驱动查询-将提供所有字段和年龄的子查询包装到主查询中
,例如
SELECT TRANDATE, TRANTYPE, INVNUM,MySection,SUM (AMOUNT), PAID, CLIENTID,
from ( ... your derived query in here..) AS DQ
where TRANTYPE IN ('INV', 'PAY') AND TRANDATE<=@DATE AND CLIENTID=7434
GROUP BY TRANDATE, TRANTYPE, INVNUM, PAID, CLIENTID, MySection
选择TRANDATE、TRANTYPE、INVNUM、MySection、SUM(AMOUNT)、PAID、CLIENTID、,
作为DQ从(…此处的派生查询…)开始
其中输入('INV','PAY')和transdate此值是超过90
超过60
超过30
的显示值,在每一列中不确定我是否遵循,请发布查询结果。@Goutam检查我发布的答案,我做你想做的。@Gautam我已更改查询您在case语句中检查的条件错误,请参阅upd一个
DECLARE @DATE VARCHAR(10)
SET @DATE='2012-12-31'
SELECT TRANDATE, TRANTYPE, INVNUM,SUM (AMOUNT), PAID, CLIENTID,
SUM(CASE WHEN TRANDATE <= DATEADD(dd, -90, @DATE) THEN AMOUNT END ) AS 'OVER 90',
SUM(CASE WHEN TRANDATE<DATEADD(dd, -90, @DATE) AND TRANDATE<=DATEADD(dd, -60, @DATE) THEN AMOUNT END) AS 'OVER 60' ,
SUM(CASE WHEN TRANDATE<DATEADD(dd, -60, @DATE) AND TRANDATE<=DATEADD(dd, -30, @DATE) THEN AMOUNT END) AS 'OVER 30' ,
SUM(CASE WHEN TRANDATE<DATEADD(dd, -30, @DATE) THEN AMOUNT END) AS 'CURRENT'
from Bill
where TRANTYPE IN ('INV', 'PAY') AND TRANDATE<=@DATE AND CLIENTID=7434
GROUP BY TRANDATE, TRANTYPE, INVNUM, PAID, CLIENTID
SELECT TRANDATE, TRANTYPE, INVNUM,MySection,SUM (AMOUNT), PAID, CLIENTID,
from ( ... your derived query in here..) AS DQ
where TRANTYPE IN ('INV', 'PAY') AND TRANDATE<=@DATE AND CLIENTID=7434
GROUP BY TRANDATE, TRANTYPE, INVNUM, PAID, CLIENTID, MySection