Я хотел бы использовать формулу для установки имен столбцов для операторов case, но простой подход не принимается. Вот пример того, что я пытаюсь сделать - есть ли способ сделать эту работу?(MS SQL Server) Определение имени столбца столбца с формулой
select
ID
-- Pull DeDupe_Decision_Count for that ID last month (EOM_Date), where each ID has multiple rows in the data set for each data month
, sum(case when EOM_Date = CONVERT(DATE, DATEADD(s,-1,DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))))
then DeDupe_Decision_Count end)
as CONVERT(DATE, DATEADD(s,-1,DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))))
-- Pulling the same for two months ago
, sum(case when EOM_Date = CONVERT(DATE, DATEADD(s,-1,DATEADD(m,-2,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))))
then DeDupe_Decision_Count end)
as CONVERT(DATE, DATEADD(s,-2,DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))))
-- Pulling the same for three months ago
, sum(case when EOM_Date = CONVERT(DATE, DATEADD(s,-1,DATEADD(m,-3,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))))
then DeDupe_Decision_Count end)
as CONVERT(DATE, DATEADD(s,-2,DATEADD(m,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))))
-- Would like to do the same for 12-24 months
from Mytable
group by ID
Я хотел бы использовать формулу вместо статического момента, так как это будет обновляться ежемесячно и включает 12-24 месяцев данных. Я мог бы использовать переменные и просто называть столбцы в прошлом месяце, 2 месяца назад, 3 месяца назад и т. Д., Но я предпочел бы, чтобы имя столбца было датой месяца.
спасибо за ответ. Я видел динамические запросы, упомянутые при изучении этого, но не смог заставить их работать. Я могу взять ваш пример и изменить поля, которые обычно поступают из моей таблицы в автономный, и он будет работать, но я не знаю, как добавить. Возможно, я должен был быть более ясным в своем первоначальном посте. Теперь я добавил к нему больше подробностей, которые, надеюсь, прояснят это. –