Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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_Sql Server_Grouping - Fatal编程技术网

Sql 将价值分组到具有年度细分的类别中

Sql 将价值分组到具有年度细分的类别中,sql,sql-server,grouping,Sql,Sql Server,Grouping,我有一个许可证申请表我想按类别显示每个财政年度的数据 对于我的查询,有两个键列 首先,有一个费用列,该列中的值决定许可证的类型 0到300之间是次要的 300到600是标准值 600到2000之间是主要的 其次,有一个日期字段,用于财政年度 我希望结果是这样的 Category | 2013/14 | 2012/13 Minor | 23 | 21 Standard | 10 | 11 Major | 5 | 3

我有一个许可证申请表我想按类别显示每个财政年度的数据

对于我的查询,有两个键列

首先,有一个
费用
列,该列中的值决定许可证的类型

  • 0到300之间是次要的
  • 300到600是标准值
  • 600到2000之间是主要的
其次,有一个
日期
字段,用于财政年度

我希望结果是这样的

Category | 2013/14 | 2012/13
Minor    |      23 |      21
Standard |      10 |      11 
Major    |       5 |       3
我在下面有这个问题,但我不能正确地回答今年的部分。 如果有人能给我提建议,我将不胜感激

select category.gr as [category],
sum(case when ((year(licence.[start_date]) in ('2010')) 
and (month(licence.[start_date]) in (4,5,6,7,8,9,10,11,12)))
or ((year(licence.[start_date]) in ('2011')) 
and (month(licence.[start_date]) in (1,2,3))) then 1 else 0 end) AS '10/11 Count',

from (  select case
when [fee_INC] between 0 and 350 then 'Minor'
when [fee_INC] between 350 and 600 then 'Standard'
else 'Major' end as gr
from [L_LICENCE_FIN]) as category,
from [L_LICENCE_FIN] as licence

group by category.gr
选择
[类别],
[2013/14],
[2012/13]
从(
选择
[类别],
STR(年(日期添加(月-3,[开始日期]),4)
+'/'
+右(STR(年(月-3,[开始日期])+1,4),2)
作为[财政年度],
计数(*)为[计数]
来自@L_许可证\u FIN
内部联接(值)
(0,300,'小调'),
(300600,“标准”),
(6002000,“少校”)
)类别([最低费用]、[最高费用]、[类别])
在([费用]>=[费用最低]和[费用]<[费用最高])
分组依据[类别],[开始日期]
)p1
([2013/14]、[2012/13])p2中[财年]的枢轴(总和([count])

财政年度的定义是什么?我们的财政年度是4月至3月。谢谢。我了解其中的大部分内容,但第14行的“VALUES”出现语法错误。此外,我看不出我们在哪里陈述实际的字段名。表中的字段为“FEE_INC”
SELECT
  [category],
  [2013/14],
  [2012/13]
FROM (
  SELECT
    [category],
    STR(YEAR(DATEADD(month,-3,[start_date])),4)
      +'/'
      +RIGHT(STR(YEAR(DATEADD(month,-3,[start_date]))+1,4),2)
      AS [fiscal_year],
    COUNT(*) AS [count]
  FROM @L_LICENCE_FIN
  INNER JOIN (VALUES
    (  0, 300, 'Minor'),
    (300, 600, 'Standard'),
    (600,2000, 'Major')
  ) categories([fee_min], [fee_max], [category])
    ON ([fee] >= [fee_min] AND [fee] < [fee_max])
  GROUP BY [category],[start_date]
) p1
PIVOT(SUM([count]) FOR [fiscal_year] IN ([2013/14],[2012/13])) p2