如何在相关列上加入这两个 select 语句 Microsoft SQL Server 2008

How to join these two select statements on related columns Microsoft SQL Server 2008

我们的目标是将这些数据加入 table 中,按 year_month 分组。

第一次查询:

select  tlyear_month,count(user_name) AS agents_lagents_value
 from
    (SELECT distinct 
            USER_NAME
            ,concat(cryear,'-',crmonth) as tlyear_month
        FROM STATUS_REPORT_TABLE_BASIC
        WHERE GROUP_NAME LIKE '%Agent%'
    GROUP BY CRYEAR, CRMONTH,user_name,group_name) sub1
    group by tlyear_month

第二次查询:

SELECT 
            concat(cryear,'-',crmonth) tsaff_YEAR_MONTH, 
        CASE -- hardcoded between 2017-01 and 2017-12
            WHEN CRYEAR = 2017  AND CRMONTH = 1 THEN 49
            WHEN CRYEAR = 2017  AND CRMONTH = 2 THEN 47
            WHEN CRYEAR = 2017  AND CRMONTH = 3 THEN 46
            WHEN CRYEAR = 2017  AND CRMONTH = 4 THEN 46
            WHEN CRYEAR = 2017  AND CRMONTH = 5 THEN 47
            WHEN CRYEAR = 2017  AND CRMONTH = 6 THEN 49
            WHEN CRYEAR = 2017  AND CRMONTH = 7 THEN 53
            WHEN CRYEAR = 2017  AND CRMONTH = 8 THEN 54
            WHEN CRYEAR = 2017  AND CRMONTH = 9 THEN 54
            WHEN CRYEAR = 2017 AND CRMONTH = 10 THEN 54
            WHEN CRYEAR = 2017 AND CRMONTH = 11 THEN 51
            WHEN CRYEAR = 2017 AND CRMONTH = 12 THEN 54
            ELSE COUNT(distinctified.USER_NAME)
        END  A_COUNT

    FROM
        (SELECT DISTINCT
            CRYEAR
            ,CRMONTH
            ,USER_NAME
            ,GROUP_NAME
        FROM STATUS_REPORT_TABLE_BASIC
        WHERE GROUP_NAME LIKE '%Agent%' )  AS distinctified
    GROUP BY CRYEAR, CRMONTH

第一个结果(不是所有行,这两个查询都包含来自相同日期范围的数据)

 2017-1 36
    2017-10 47
    2017-11 50
    2017-12 53
    2017-2  35
    2017-3  36
    2017-4  33
    2017-5  34
    2017-6  34
    2017-7  40

第二个结果(不是所有行,这两个查询都包含来自相同日期范围的数据)

2017-1  49
2018-1  55
2017-2  47
2018-2  52
2017-3  46
2018-3  51
2017-4  46
2018-4  49
2017-5  47
2018-5  49

我是 sql 的新手,我 运行 没有想法。 任何帮助,将不胜感激。

谢谢

在两个查询之间使用连接

     select a.tlyear_month, agents_lagents_value,cnt from 
(select  tlyear_month,count(user_name) AS agents_lagents_value
         from
            (SELECT distinct 
                    USER_NAME
                    ,concat(cryear,'-',crmonth) as tlyear_month
                FROM STATUS_REPORT_TABLE_BASIC
                WHERE GROUP_NAME LIKE '%Agent%'
            GROUP BY CRYEAR, CRMONTH,user_name,group_name) sub1
            group by tlyear_month)a
inner join
(

        SELECT 
                    concat(cryear,'-',crmonth) as t2year_month, 
                CASE -- hardcoded between 2017-01 and 2017-12
                    WHEN CRYEAR = 2017  AND CRMONTH = 1 THEN 49
                    WHEN CRYEAR = 2017  AND CRMONTH = 2 THEN 47
                    WHEN CRYEAR = 2017  AND CRMONTH = 3 THEN 46
                    WHEN CRYEAR = 2017  AND CRMONTH = 4 THEN 46
                    WHEN CRYEAR = 2017  AND CRMONTH = 5 THEN 47
                    WHEN CRYEAR = 2017  AND CRMONTH = 6 THEN 49
                    WHEN CRYEAR = 2017  AND CRMONTH = 7 THEN 53
                    WHEN CRYEAR = 2017  AND CRMONTH = 8 THEN 54
                    WHEN CRYEAR = 2017  AND CRMONTH = 9 THEN 54
                    WHEN CRYEAR = 2017 AND CRMONTH = 10 THEN 54
                    WHEN CRYEAR = 2017 AND CRMONTH = 11 THEN 51
                    WHEN CRYEAR = 2017 AND CRMONTH = 12 THEN 54
                    ELSE COUNT(distinctified.USER_NAME)
                END  as cnt

            FROM
                (SELECT DISTINCT
                    CRYEAR
                    ,CRMONTH
                    ,USER_NAME
                    ,GROUP_NAME
                FROM STATUS_REPORT_TABLE_BASIC
                WHERE GROUP_NAME LIKE '%Agent%' )  AS distinctified
            GROUP BY CRYEAR, CRMONTH)b on a.tlyear_month=b.concat(cryear,'-',crmonth)