我有一个名为LAB的表,它有这些重要的字段:
DATA,CODE,STRUTT。 DATA包含日期,代码字符串和strutt整数
我需要的是查询此表并返回类似的内容:
-----------------------
| DAYS | YEAR | YEAR2 |
-----------------------
| | STRUTT |
-----------------------
| | | |
他们建议我使用枢轴。但我不知道如何分组。 我的第一次尝试是:
SELECT * FROM
(
SELECT STRUTT, CODe, DATA
FROM LAB
WHERE DATA >= DATE '2016-05-01' AND DATA <= DATE '2016-05-31'
)
PIVOT
(
count(DISTINCT CODE)
FOR STRUTT IN (21,22,23,24,25,26)
)
这是我使用Pivot的开始。但后来我试图更改for语句并放置:
FOR DATA IN ('2016-05-01','2016-05-21')
但这给了我错误。解决整个问题的一些想法?或者至少解决最后一个日期? 已解决但最终无需解决问题
答案 0 :(得分:0)
看起来您正在使用Oracle。我可能会建议尝试:
FOR DATA IN (DATE '2016-05-01', DATE '2016-05-21')
否则,字符串值将被解释为字符串,而不是日期。
答案 1 :(得分:0)
我通过查看某处来解决问题...我仍然不知道我使用的是哪个版本的Oracle。顺便说一句,这对我有用:
select strutt
, to_char(data,'dd-MON') AS dayMonth
, count(DISTINCT (case extract(year from data) when 2015 then code end)) numutenze_2015
, count(DISTINCT (case extract(year from data) when 2016 then code end)) numutenze_2016
from lab
where data >= DATE '2015-01-01' and data <= DATE '2016-06-08'
group by strutt, to_char(data,'dd-MON')
order by strutt, to_char(data,'dd-MON') asc
我唯一的问题是,我不知道如何订购日期......它从4月开始,然后是8月...... ecc