Sql 如何按年度筛选某些期间列

Sql 如何按年度筛选某些期间列,sql,Sql,我试图根据年份和期间(月)提取上一年的使用情况报告 我调整了顶行,添加了一个过滤器,用于和demand_period.year_for_period=year(getdate()),但随后意识到它也将消除去年结果的可能性。 在添加年度报表之前,它提供了所有年份的全部使用金额,按月份细分。 以下是我目前掌握的情况: SELECT (inv_mast.item_id) as [Item ID] ,inv_mast.item_desc as [Item Description] ,ad

我试图根据年份和期间(月)提取上一年的使用情况报告 我调整了顶行,添加了一个过滤器,用于和demand_period.year_for_period=year(getdate()),但随后意识到它也将消除去年结果的可能性。 在添加年度报表之前,它提供了所有年份的全部使用金额,按月份细分。 以下是我目前掌握的情况:

SELECT (inv_mast.item_id) as [Item ID]
    ,inv_mast.item_desc as [Item Description]
    ,address.name as [Prim Supplier Name]
    ,SUM(CASE WHEN (demand_period.period = MONTH(getdate()) AND demand_period.year_for_period = YEAR(getdate()))THEN inv_period_usage ELSE 0 END) AS [Period1Usage]
    ,SUM(CASE WHEN demand_period.period = '2' THEN inv_period_usage ELSE 0 END) AS [Period2Usage]
    ,SUM(CASE WHEN demand_period.period = '3' THEN inv_period_usage ELSE 0 END) AS [Period3Usage]
    ,SUM(CASE WHEN demand_period.period = '4' THEN inv_period_usage ELSE 0 END) AS [Period4Usage]
    ,SUM(CASE WHEN demand_period.period = '5' THEN inv_period_usage ELSE 0 END) AS [Period5Usage]
    ,SUM(CASE WHEN demand_period.period = '6' THEN inv_period_usage ELSE 0 END) AS [Period6Usage]
    ,SUM(CASE WHEN demand_period.period = '7' THEN inv_period_usage ELSE 0 END) AS [Period7Usage]
    ,SUM(CASE WHEN demand_period.period = '8' THEN inv_period_usage ELSE 0 END) AS [Period8Usage]
    ,SUM(CASE WHEN demand_period.period = '9' THEN inv_period_usage ELSE 0 END) AS [Period9Usage]
    ,SUM(CASE WHEN demand_period.period = '10' THEN inv_period_usage ELSE 0 END) AS [Period10Usage]
    ,SUM(CASE WHEN demand_period.period = '11' THEN inv_period_usage ELSE 0 END) AS [Period11Usage]
    ,SUM(CASE WHEN demand_period.period = '12' THEN inv_period_usage ELSE 0 END) AS [Period12Usage]
FROM inv_mast
    JOIN inv_loc ON inv_loc.inv_mast_uid = inv_mast.inv_mast_uid
    JOIN inventory_supplier_x_loc ON inventory_supplier_x_loc.location_id = inv_loc.location_id
    JOIN inventory_supplier ON inventory_supplier.inventory_supplier_uid = inventory_supplier_x_loc.inventory_supplier_uid
    JOIN supplier ON supplier.supplier_id = inventory_supplier.supplier_id
    JOIN address ON (address.id = supplier.supplier_id)
    JOIN inv_period_usage ON inv_period_usage.location_id = inv_loc.location_id
    JOIN demand_period ON (inv_period_usage.demand_period_uid = demand_period.demand_period_uid)
WHERE
    (inv_loc.location_id = '100001')
    AND (inventory_supplier_x_loc.primary_supplier = 'Y')
    AND (inv_mast.item_id = '111')
GROUP BY item_id, item_desc, name
我如何编辑SELECT报表以包括过去12个月,包括是否在前一年? 谢谢你的帮助

添加以下内容:

and demand_period.year_for_period >= DATEADD(month, -12, getdate())