我正在尝试生成一些报告,这些报告显示每个月的计算值,其中月份值是列。 基本查询很好地将月份报告为行: 但是,如果我尝试透视表,则会始终出现ORA-56902错误:“期望透视函数内有聚合函数”: 有没有办法让PIVOT将ROUND(SUM(REVENUE)/ SUM(HEAD ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我正在使用数据集 ,因此需要计算过去几年中的某些天的概率 。 数据集如下所示:
ID STATION ID DATE ELEMENT ID 00 01 02 03......23
1 6106000 2009-05-11 110 2550 900 1050 1550 3000
2 6106000 2009-05-12 110 380 1400 1550 5090 200
3 6106000 2009-05-13 110 500 1250 800 3550 4020
我无法找到一种方法来在数据透视表中显示所需的值。 这是我在SQL中拥有的东西:
SELECT * FROM
(SELECT
Convert(char(15),[DATE],107) AS 'Date',
Format([DATE],'MMM dd') AS 'Day',
Probability = Cast(Round(((
IIf([00]>1410,1,IIf([00]=0,1,0)) +
IIf([01]>1410,1,IIf([01]=0,1,0)) +
IIf([02]>1410,1,IIf([02]=0,1,0)) +
IIf([03]>1410,1,IIf([03]=0,1,0)) +
IIf([04]>1410,1,IIf([04]=0,1,0)) +
IIf([05]>1410,1,IIf([05]=0,1,0)) +
IIf([06]>1410,1,IIf([06]=0,1,0)) +
IIf([07]>1410,1,IIf([07]=0,1,0)) +
IIf([08]>1410,1,IIf([08]=0,1,0)) +
IIf([09]>1410,1,IIf([09]=0,1,0)) +
IIf([10]>1410,1,IIf([10]=0,1,0)) +
IIf([11]>1410,1,IIf([11]=0,1,0)) +
IIf([12]>1410,1,IIf([12]=0,1,0)) +
IIf([13]>1410,1,IIf([13]=0,1,0)) +
IIf([14]>1410,1,IIf([14]=0,1,0)) +
IIf([15]>1410,1,IIf([15]=0,1,0)) +
IIf([16]>1410,1,IIf([16]=0,1,0)) +
IIf([17]>1410,1,IIf([17]=0,1,0)) +
IIf([18]>1410,1,IIf([18]=0,1,0)) +
IIf([19]>1410,1,IIf([19]=0,1,0)) +
IIf([20]>1410,1,IIf([20]=0,1,0)) +
IIf([21]>1410,1,IIf([21]=0,1,0)) +
IIf([22]>1410,1,IIf([22]=0,1,0)) +
IIf([23]>1410,1,IIf([23]=0,1,0)))/24.0)*100.0,0) AS int)
FROM
ON_2
WHERE
((([ELEMENT ID])=110) AND
(([STATION ID])='6106000') AND
((Day([DATE])) BETWEEN 1 AND 15) AND
((DatePart("m",[DATE]))=12))) AS BaseData
PIVOT
(MAX([Probability])
FOR [DATE]
IN ([2000],[2001],[2002],[2003],[2004],[2005],[2006],[2007],[2008],[2009],[2010],[2011])) AS PivotTable
如您所见,我正在SELECT部分执行一组操作 ,其中包括IIf statements
和其他一些数学运算。 在获得所需的值之后,我将这些值分配给了“概率”,这是我在PIVOT部分中使用的 ,但是结果如下:
Day 2000 2001 2002 2003....2011
Dec 01 NULL NULL NULL NULL....NULL
Dec 02 NULL NULL NULL NULL....NULL
Dec 03 NULL NULL NULL NULL....NULL
.
.
Dec 15 NULL NULL NULL NULL....NULL
我已经测试了IIf计算和所有数学运算。 我可以获取所需的数字,但是当我将其转换为数据透视表时,看不到值,只能看到NULL。
非常感谢您的帮助,感谢您的宝贵时间!
你需要使用
datepart(year, date)
代替
Convert(char(15),[DATE],107) AS 'Date'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.