当前位置:首页 » 编程语言 » sql季度末
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql季度末

发布时间: 2023-08-24 23:47:34

A. sql 如何取当季最后一个月的第一天

oracle(本季度第一天+两个月=本季度最后一个月第一天)
SELECT to_char(add_months(TRUNC(SYSDATE, 'Q'), 2), 'YYYY-MM-DD') FROM al;
sqlserver:还是先找到当前季度的第一天然后加两个月
Select DATEADD(mm,2,DATEADD(qq, DATEDIFF(qq,0,getdate()), 0))

mysql:想不出来,mysql的函数很多都是关于天的,而且太久没用,差不多都还给书本了。

其实也可以用case when来写,首先判断当前时间是第几季度,然后用case when来写,等于1就是3.1,等于2就是6.1,以此类推,这个应该不算很麻烦,判断三次,就可以了。

B. SQL语句:取某个日期所在季度的最后一天,精确到时分秒

取季度数字然后再CASE WHEN 就好啦﹐参考以下代码

DECLARE@TBTABLE(TIMEDATETIME)
INSERTINTO@TBVALUES('2013-02-0911:22:59.997')
INSERTINTO@TBVALUES('2013-05-0713:12:51.333')
INSERTINTO@TBVALUES('2013-07-0715:42:22.633')
INSERTINTO@TBVALUES('2013-10-2019:29:22.783')

SELECT*,CASEWHENDATEPART(QQ,TIME)=1THENDATEADD(D,-1,'2013-04-0123:59:59.997')
WHENDATEPART(QQ,TIME)=2THENDATEADD(D,-1,'2013-07-0123:59:59.997')
WHENDATEPART(QQ,TIME)=3THENDATEADD(D,-1,'2013-10-0123:59:59.997')
WHENDATEPART(QQ,TIME)=4THENDATEADD(D,-1,'2014-01-0123:59:59.997')
ENDASQUARTER
FROM@TB

效果:

TIME QUARTER

---------------------------------- - -----------------------------------

2013-02-09 11:22:59.997 2013-03-31 23:59:59.997

2013-05-07 13:12:51.333 2013-06-30 23:59:59.997

2013-07-07 15:42:22.633 2013-09-30 23:59:59.997

2013-10-20 19:29:22.783 2013-12-31 23:59:59.997

C. sql季度汇总

不清楚 年月是按照什么格式写的

所以就说下思路
select ORGCODE,
case when month in(1,2,3) then '第一季度'
when month in(4,5,6) then '第二季度' end ji,
sum(TBJIAF) TBJIAF
where year=条件年份
group by ORGCODE,
case when month in(1,2,3) then '第一季度'
when month in(4,5,6) then '第二季度' end

-----------------------------------------------------
差不多这个格式

D. sql--按照季度统计销售额 怎么写

俩方法

selectyear(订单.订购日期)年份,
sum(casewhenmonth(订单.订购日期)between1and3then订单明细.单价*订单明细.数量else0end)一季度销售金额,
sum(casewhenmonth(订单.订购日期)between4and6then订单明细.单价*订单明细.数量else0end)二季度销售金额,
sum(casewhenmonth(订单.订购日期)between7and9then订单明细.单价*订单明细.数量else0end)三季度销售金额,
sum(casewhenmonth(订单.订购日期)between10and12then订单明细.单价*订单明细.数量else0end)四季度销售金额
from订单,订单明细
where订单.订单ID=订单明细.订单IDandyear(订单.订购日期)between1996and1998
groupbyyear(订单.订购日期)


selectyear(订单.订购日期)年份,
casewhenmonth(订单.订购日期)between1and3then'一季度'
whenmonth(订单.订购日期)between4and6then'二季度'
whenmonth(订单.订购日期)between7and9then'三季度'
whenmonth(订单.订购日期)between10and12then'四季度'end季度,
sum(订单明细.单价*订单明细.数量)金额
from订单,订单明细
where订单.订单ID=订单明细.订单IDandyear(订单.订购日期)between1996and1998
groupbyyear(订单.订购日期),
casewhenmonth(订单.订购日期)between1and3then'一季度'
whenmonth(订单.订购日期)between4and6then'二季度'
whenmonth(订单.订购日期)between7and9then'三季度'
whenmonth(订单.订购日期)between10and12then'四季度'end



你看你要用哪个

E. SQL如何获得本季度第一天,一年的第一天,本月的最后一天

你好,以下是获取年,季度,天日期的所有方式:
DECLARE @dt datetime
SET @dt=GETDATE()
DECLARE @number int
SET @number=3
--1.指定日期该年的第一天或最后一天
--A. 年的第一天
SELECT CONVERT(char(5),@dt,120)+'1-1'
--B. 年的最后一天
SELECT CONVERT(char(5),@dt,120)+'12-31'
--2.指定日期所在季度的第一天或最后一天
--A. 季度的第一天
SELECT CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt)-2,
@dt),
120)+'1')

--B. 季度的最后一天(CASE判断法)
SELECT CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)
+CASE WHEN DATEPART(Quarter,@dt) in(1,4)
THEN '31'ELSE '30' END)

--C. 季度的最后一天(直接推算法)
SELECT DATEADD(Day,-1,
CONVERT(char(8),
DATEADD(Month,
1+DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)+'1')

--3.指定日期所在月份的第一天或最后一天
--A. 月的第一天
SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')

--B. 月的最后一天
SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1')

--C. 月的最后一天(容易使用的错误方法)
SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))

--4.指定日期所在周的任意一天
SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)

--5.指定日期所在周的任意星期几
--A. 星期天做为一周的第1天
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)

--B. 星期一做为一周的第1天
SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)

F. sql季度汇总

我没有Oracle环境,这是用sql server做的,可以达到你的要求,这个问题处理的关键在于怎样通过年月来获得季度的汇总,所以要先把ny给分解成年和季度字段(case when 那部分,oracle也支持),剩下的就是简单的group by了。可以参考一下下面的代码。

select 部门编号,年,季度,sum(值)
from
(
SELECT
ORGCODE 部门编号
,SUBSTRING(ny,1,4) 年
,case when 0<SUBSTRING(ny,5,2) AND SUBSTRING(ny,5,2)<4 THEN 1
WHEN 3<SUBSTRING(ny,5,2)AND SUBSTRING(ny,5,2)<7 THEN 2
WHEN 6<SUBSTRING(ny,5,2)AND SUBSTRING(ny,5,2)<10 THEN 3
WHEN 9<SUBSTRING(ny,5,2)AND SUBSTRING(ny,5,2)<13 THEN 4
ELSE 0
END 季度
,JHRWFZ 值
FROM JXKH_YDH
) tmp
group by 部门编号,年,季度
order by 部门编号