Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在查询中使用多个总和大小写行_Sql - Fatal编程技术网

Sql 在查询中使用多个总和大小写行

Sql 在查询中使用多个总和大小写行,sql,Sql,这段代码正是我需要它为所需的月份所做的。基本上提供分子和分母 SUM(CASE WHEN smsdss.c_cfv_pas_fct_pt_acct_vst_all.vst_end_date BETWEEN '2013-01-01' and '2013-01-31' THEN 1 ELSE 0 END) AS Total_Jan13, SUM(CASE WHEN smsdss.c_cfv_pas_fct_pt_acct_vst_all.vst_end_date BETWE

这段代码正是我需要它为所需的月份所做的。基本上提供分子和分母

SUM(CASE WHEN smsdss.c_cfv_pas_fct_pt_acct_vst_all.vst_end_date BETWEEN '2013-01-01' and             '2013-01-31'  THEN 1 ELSE 0 END) AS Total_Jan13,
SUM(CASE WHEN smsdss.c_cfv_pas_fct_pt_acct_vst_all.vst_end_date BETWEEN '2013-01-01' and '2013-01-31' and [ind_ra_cfvmc_00-30] = 'YES' THEN 1 ELSE 0 END) AS RA_Jan13,
SUM(CASE WHEN smsdss.c_cfv_pas_fct_pt_acct_vst_all.vst_end_date BETWEEN '2013-02-01' and '2013-02-28'  THEN 1 ELSE 0 END) AS Total_Feb13,
SUM(CASE WHEN smsdss.c_cfv_pas_fct_pt_acct_vst_all.vst_end_date BETWEEN '2013-02-01' and '2013-02-28' and [ind_ra_cfvmc_00-30] = 'YES'   THEN 1 ELSE 0 END) AS RA_Feb13,
SUM(CASE WHEN smsdss.c_cfv_pas_fct_pt_acct_vst_all.vst_end_date BETWEEN '2013-03-01' and '2013-03-31'  THEN 1 ELSE 0 END) AS Total_Mar13,
当你有几个月的时间时,它可能会变得相当乏味……有没有更有效的方法来执行此计算


谢谢

您可以在子选择中按年份和月份对它们进行分组,然后进行操作:

SELECT DATEPART(year,  smsdss.c_cfv_pas_fct_pt_acct_vst_all.vst_end_date) AS TotalYear, 
       DATEPART(month,  smsdss.c_cfv_pas_fct_pt_acct_vst_all.vst_end_date) AS TotalMonth, 
       COUNT(*) AS Total
FROM [table]
GROUP BY DATEPART(year,  smsdss.c_cfv_pas_fct_pt_acct_vst_all.vst_end_date), 
       DATEPART(month,  smsdss.c_cfv_pas_fct_pt_acct_vst_all.vst_end_date)

这将为您提供每月的总数,而无需事先指定月份。

如果您要询问效率,需要发布整个查询、表结构,并使用您使用的数据库标记问题。不管怎么说,这些都是好主意,但性能取决于数据库。很高兴为您提供帮助-我一直在报告中遇到这种情况。