Sql 嵌套选择和动态位置

Sql 嵌套选择和动态位置,sql,select,nested,sum,Sql,Select,Nested,Sum,我需要显示本年度和上一年度迄今为止的结果。理想情况下,我想要的结果是 ID|CYTD|PYTD # |Sum |Sum 我的查询如下所示。问题是如何将where设置为与当前年份的行匹配 select Table.ID, SUM(Table.Column) as CYTD, (select SUM(Table.Column) from Table where Table.Id = ?? and Table.Year between Prev and Current group by Tab

我需要显示本年度和上一年度迄今为止的结果。理想情况下,我想要的结果是

ID|CYTD|PYTD
# |Sum |Sum
我的查询如下所示。问题是如何将where设置为与当前年份的行匹配

select Table.ID,
 SUM(Table.Column) as CYTD, 

(select SUM(Table.Column) from Table
where Table.Id = ?? and Table.Year between Prev and Current
group by Table.Id) as PYTD

Where Table.Year between Current and Future
group by Table.Id

试着做以下几点:

SELECT TT.ID,
    SUM(TT.amount) AS CYTD,
    (SELECT SUM(T.amount)
     FROM YOURTABLE T
     WHERE T.Id = TT.id
        AND T.DATE BETWEEN '2012-01-01' AND '2013-01-01'
     GROUP BY T.Id) AS PYTD
FROM YOURTABLE TT
WHERE TT.DATE BETWEEN '2013-01-01' AND '2014-01-01'
GROUP BY TT.Id
因为
yourtable
在查询中多次出现,所以您必须在每次出现时为它指定一个别名,然后比较它们的id,这应该会得到您想要的结果

编辑:

如果希望它是动态的,并使用当前年份作为参考,可以这样做:

SELECT TT.ID,
    SUM(TT.amount) AS CYTD,
    (SELECT SUM(T.amount)
     FROM YOURTABLE T
     WHERE T.Id = TT.id
        AND YEAR(T.DATE) = YEAR(now())
     GROUP BY T.Id) AS PYTD
FROM YOURTABLE TT
WHERE YEAR(TT.DATE) = YEAR(now()) - 1
GROUP BY TT.Id;

看看这张表,看看它的作用。

你能描述一下这张表吗?它有年份栏吗?该列的数据类型是什么?ID int,Amount decimal,Date datetime。它有点大,查询也有点大,所以我试图简化它,以分享它的基本内容。