Solución:
Utilizar esta:
dateadd(year, -1, getdate())
Según su comentario sobre los valores de año codificados de forma rígida, el uso de
DATEDIFF(year,BOOKED,GETDATE())
para obtener el número de años desde la fecha que buscas, con suerte debería llevarte en la dirección que buscas.
Probablemente terminará con algo como:
SELECT DATEADD(year, -DATEDIFF(year,BOOKED,GETDATE()), GETDATE())
Ok, parece más bien que todo lo que realmente quieres hacer (puede que me equivoque, lo siento si es así) es agrupar las reservas por año.
¿El resultado de lo siguiente ayudará a lograrlo?
SELECT SDESCR,DATEADD(YEAR, DATEDIFF(YEAR, 0, BOOKED),0), Sum(APRICE) as Total, Sum(PARTY) as PAX
FROM DataWarehouse.dbo.B01Bookings AS B101Bookings
GROUP BY SDESCR,DATEADD(YEAR, DATEDIFF(YEAR, 0, BOOKED),0)
Como dije, esto es una suposición de su objetivo, no necesariamente una respuesta a su pregunta.
Para restar un año de una fecha, simplemente use la función DATEADD ()
SELECT DATEADD(year, -1, GETDATE())
Editado:
SELECT SDESCR,DYYYY, Sum(APRICE) as Total, Sum(PARTY) as PAX
FROM DataWarehouse.dbo.B01Bookings AS B101Bookings
WHERE
(BOOKED <= Convert(int, Convert(datetime, Convert(varchar, DatePart(month, GETDATE())) + "https://foroayuda.es/" + Convert(varchar, DatePart(day, GetDate())) + "https://foroayuda.es/" + DYYYY))
Group By SDESCR,DYYYY
Order by DYYYY
Editado 2:
Acabo de ejecutar esta declaración
select Convert(datetime, Convert(varchar, DatePart(month, GETDATE())) + "https://foroayuda.es/" + Convert(varchar, DatePart(day, GetDate())) + "https://foroayuda.es/" + '2007')
Que funciona bien. entonces mi pregunta es ¿qué se almacena en la columna DYYYY? ¿Siempre contiene un año válido, puede contener nulos?