我有存储执行不同任务的过程,但我想将它们中的一些放在一起以减少在数据库中创建的存储过程的数量 . 许多程序都是基于多年的统计数据,这是一个例子:

Select 
DATENAME(MONTH, DATE_) AS Date,
 count(distinct VATNUMBER) As Count
from 
   (
    select VATNUMBER, DATE_ = min(DATE_)
    from
    ACCOUNTS a inner join CUSTTABLE b
    on a.ID= b.ID
    where ITEMNUMBER in(7055,7056,7059) AND YEAR(a.DATE_) = '2017'
    AND VATNUMBER NOT IN (
    select VATNUMBER
    from
    ACCOUNTS a inner join CUSTTABLE b
    on a.ID= b.ID
    where ITEMNUMBER in(7055,7056,7059)
    AND DATE_ < '2017-01-01'
)
group by VATNUMBER
) d
group by MONTH(DATE_), DATENAME(MONTH, DATE_)
Order by MONTH(DATE_)

2017年的结果:

Date     |   Count
    January  |   61
    February |   43
    March    |   23
    April    |   48
    etc....

现在我对2018年有相同的程序:

Select 
    DATENAME(MONTH, DATE_) AS Date,
     count(distinct VATNUMBER) As Count
    from 
       (
        select VATNUMBER, DATE_ = min(DATE_)
        from
        ACCOUNTS a inner join CUSTTABLE b
        on a.ID= b.ID
        where ITEMNUMBER in(7055,7056,7059) AND YEAR(a.DATE_) = '2018'
        AND VATNUMBER NOT IN (
        select VATNUMBER
        from
        ACCOUNTS a inner join CUSTTABLE b
        on a.ID= b.ID
        where ITEMNUMBER in(7055,7056,7059)
        AND DATE_ < '2018-01-01'
    )
    group by VATNUMBER
    ) d
    group by MONTH(DATE_), DATENAME(MONTH, DATE_)
    Order by MONTH(DATE_)

2018年的结果:

Date     |   Count
    January  |   119
    February |   200
    March    |   112
    April    |   87
    etc....

我想要做的是将两个select语句放在相同的存储过程下 . 我希望看到的结果是:

Date 2017|   Count  | Date 2018|   Count
    January  |   61     | January  |   119
    February |   43     | February |   200
    March    |   23     | March    |   112
    April    |   48     | April    |   87
    etc....