使用年份和月份字段选择记录 - SQL Server
问题描述:
我需要使用给定年份和月份的范围从表中选择记录我正在使用此SQL Server语句,如果我使用不同的年份作为开始年份,那么该语句工作正常,但如果我使用同一年和不同的月份不起作用。使用年份和月份字段选择记录 - SQL Server
SELECT TOP 1000 [Clave Titular Cedula]
,[Clave Cifcod]
,[Clave Anio corte historico]
,[Clave Mes de corte historico]
,[Clave Tipo de tarjeta]
,[ClaveCodigo grupo inf#promocio]
,[Clave Codigo subgrupo inf#prom#]
,[Cant# Compras]
,[Valor Compras]
FROM [Prueba].[dbo].[Gasto]
where ([Clave Titular Cedula] = '0917947160' and [Clave Cifcod] = '284849' and [ClaveCodigo grupo inf#promocio] = '05')
and (([Clave Anio corte historico] = '2016' and [Clave Mes de corte historico] >= 02)
or ([Clave Anio corte historico] > '2016' and [Clave Anio corte historico] < '2016')
or ([Clave Anio corte historico] = '2016' and [Clave Mes de corte historico] <= 09))
例如,这将返回事件的月份01而不是月份02的记录作为起始月份。
任何建议将不胜感激。
由于提前,
鲍里斯塔拉
答
您可以使用此,通过排除所有错误的选项。我prefere你结合的年份和月份,如:YYYY-MM
SELECT * FROM表WHERE NOT(FROM_DATE < #RangeEnd或TO_DATE> #RangeStart)
希望帮助
答
您的查询简化为:
SELECT TOP 1000
[Clave Titular Cedula]
,[Clave Cifcod]
,[Clave Anio corte historico]
,[Clave Mes de corte historico]
,[Clave Tipo de tarjeta]
,[ClaveCodigo grupo inf#promocio]
,[Clave Codigo subgrupo inf#prom#]
,[Cant# Compras]
,[Valor Compras]
FROM
[Prueba].[dbo].[Gasto]
where
([Clave Titular Cedula] = '0917947160')
and ([Clave Cifcod] = '284849')
and ([ClaveCodigo grupo inf#promocio] = '05')
and ([Clave Anio corte historico] = '2016')
and ([Clave Mes de corte historico] between 02 and 09)
您的最后一项或声明允许所有在2016年的月份少于10个月返还 - 第1个月是其中的一部分。你需要重构你的查询。如果你正在寻找一个范围 - 尝试使用之间的月 – MageeWorld
除了'([Clave Anio corte historico]>'2016'和[Clave Anio corte historico] MageeWorld