SQL/Crystal记录选择
我的SQL已经生锈了,我无法理解这一点 我有一个表,有一个年份字段,然后是一系列周期x字段。 所以日期看起来像SQL/Crystal记录选择,sql,crystal-reports,Sql,Crystal Reports,我的SQL已经生锈了,我无法理解这一点 我有一个表,有一个年份字段,然后是一系列周期x字段。 所以日期看起来像 YEAR PERIOD1 PERIOD2 ... PERIOD12 2014 100 200 300 2015 200 300 400 我的问题是,要创建一个财政年度,我需要从2015年开始的时间段1-7和从2015年开始的时间段8-12 如果我能写一个select语句来
YEAR PERIOD1 PERIOD2 ... PERIOD12
2014 100 200 300
2015 200 300 400
我的问题是,要创建一个财政年度,我需要从2015年开始的时间段1-7和从2015年开始的时间段8-12
如果我能写一个select语句来给我这个,或者在Crystal中写一个公式字段来给我这些周期的SUM
,我会很生气
任何想法都会很棒。你的问题提到了2015年以后的两个时期。如果确实如此,您可以添加每行的句点字段
但是,如果2015财年由2015年起的第1-7期和2014年起的第8-12期定义,您可以按如下方式处理
给定Oracle中的示例设置,例如:
CREATE TABLE tbl
(year int, period1 int, period2 int, period3 int, period4 int, period5 int, period6 int, period7 int, period8 int, period9 int, period10 int, period11 int, period12 int);
INSERT ALL
INTO tbl (year, period1, period2, period3, period4, period5, period6, period7, period8, period9, period10, period11, period12)
VALUES (2014, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200)
INTO tbl (year, period1, period2, period3, period4, period5, period6, period7, period8, period9, period10, period11, period12)
VALUES (2015, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300)
SELECT * FROM dual;
您可以使用几个“UNIONALL”语句规范化数据。标准化后,可以更轻松地查询数据,并且可以应用案例报表来划分财政年度的期间范围,如下所示:
select case when period between '08' and '12' then year + 1
when period between '01' and '07' then year
else null
end fin_year,
sum(amount) amount
from (select year, '01' period, period1 amount from tbl union all
select year, '02' period, period2 amount from tbl union all
select year, '03' period, period3 amount from tbl union all
select year, '04' period, period4 amount from tbl union all
select year, '05' period, period5 amount from tbl union all
select year, '06' period, period6 amount from tbl union all
select year, '07' period, period7 amount from tbl union all
select year, '08' period, period8 amount from tbl union all
select year, '09' period, period9 amount from tbl union all
select year, '10' period, period10 amount from tbl union all
select year, '11' period, period11 amount from tbl union all
select year, '12' period, period12 amount from tbl
)
group by case when period between '08' and '12' then year + 1
when period between '01' and '07' then year
else null
end;
祝你好运 您可以按顺序返回句点(或者只需将它们全部相加),并以任何方便的方式对它们进行别名
select t1.PERIOD8 + ... t1.PERIOD12 + t2.PERIOD1 + t2.PERIOD2, + ... t1.PERIOD7
from T as t1 inner join T as t2 on t2.YEAR = t1.YEAR + 1
where t1.YEAR = 2014;
虽然我喜欢在一列中处理所有数据的想法,但我认为这可能比一组联合要快。在您的数据中没有显示1-7或8-12部分。。如何分叉?使用….代替书写句点1到12。。。。为了显示它们都是相同的格式…不清楚,你能给我们输入数据和输出数据的表格或excel格式或图像布局,以了解更多。我尝试了这个。。。。从EMPLACTUAL_FBL_YEAR_V中选择t1.PERIOD8+t1.PERIOD9+t1.PERIOD10+t1.PERIOD11+t1.PERIOD12+t2.PERIOD1+t2.PERIOD2作为t1内部连接EMPLACTUAL_FBL_YEAR_V作为t2.YEAR=t1.YEAR+1,其中t1.YEAR='2014'继续获取ORA-00933:SQL命令未正确返回。。。。SQL命令未正确结束。。。。即使我在末尾添加了group by或order by,我仍然会得到相同的错误。是否需要分号?你没说这是哪个站台。没关系,这是神谕。