SQL Group By返回多个值

SQL Group By返回多个值,sql,sql-server,stored-procedures,group-by,dynamic-sql,Sql,Sql Server,Stored Procedures,Group By,Dynamic Sql,我有一个问题,我需要从表中获取一些数据的总计数 我需要执行3种类型的分组 1.1分组应在合作伙伴上 2.1关于国家的分组 3.1.日期分组 我有一张这样的桌子 PartnerId, CountryId, Date 1 2 10-01-2017 1 2 10-01-2017 1 3 10-01-2017 1 1 10-01- 2013 我希望返回数据集为

我有一个问题,我需要从表中获取一些数据的总计数

我需要执行3种类型的分组 1.1分组应在合作伙伴上 2.1关于国家的分组 3.1.日期分组

我有一张这样的桌子

PartnerId, CountryId, Date
  1           2       10-01-2017
  1           2       10-01-2017
  1           3       10-01-2017
  1           1       10-01- 2013
我希望返回数据集为

1     2    10-01-2017 - total 2
1     3    10-01-2017 - total 1
1     1    10-01-2013 - total 1
下面是我为合作伙伴分组所做的尝试,但是我得到了不正确的值,并且重复了错误的总计数

  ELSE IF(@partnerId > 0 AND @CountryId = 0 AND @InvoiceMonth IS NULL)
        BEGIN
             SET @sql = @sql + ' INSERT INTO #FinalBucket2
          SELECT  b.PartnerId, Null, b.CountryId, NULL, a.Local_Closed_Calendar_Month, b.Total
         FROM #DataBucket2 a WITH(NOLOCK),
          ( SELECT  PartnerId, CountryId, count(*) Total
         FROM #DataBucket2 WITH(NOLOCK)
         GROUP BY PartnerId, CountryId ) b
         WHERE a.PartnerId = b.PartnerId 
       '
        END
这里,如果我传递PartnerId,那么分组应该是按partner的。 如果我传递了countryId,但没有PartnerId和InvoiceMonth,那么分组应该在country上。
如果我只传递InvoiceMonth,那么分组应该只在InvoiceMonth上

您可以使用下面的SQL。这将按partnerid、countryid和本地日历月进行分组。如果你想按国家分组,然后按所有合作伙伴分组,那么你只需要切换它们

SELECT partnerId,
       countryId,
       local_closed_calendar_month,
       COUNT(*) Total
  FROM #DataBucket2
 GROUP BY partnerId, 
          countryId,
          local_closed_calendar_month

您可以使用下面的SQL语句。这将按partnerid、countryid和本地日历月进行分组。如果你想按国家分组,然后按所有合作伙伴分组,那么你只需要切换它们

SELECT partnerId,
       countryId,
       local_closed_calendar_month,
       COUNT(*) Total
  FROM #DataBucket2
 GROUP BY partnerId, 
          countryId,
          local_closed_calendar_month

您进行了某种程度的自联接,只是为了获得一个.Local\u Closed\u Calendar\u Month?是的,DataBucket2包含我需要的所有列的主数据,因此我这样做了。有什么办法吗?你为什么不把这个列添加到这个select,select PartnerId,CountryId,count*Total中,不按PartnerId,CountryId分组?@FerdinandGaspar:我想你是对的,如果我想按国家分组,我该怎么办?所以,如果我想要像国家X所有合作伙伴所有日期=总计数这样的东西,你能在上面的样本数据上提供一个.Local\u Closed\u Calendar\u Month吗?TY你做了一些自我连接只是为了得到一个.Local\u Closed\u Calendar\u Month?是的,DataBucket2包含我需要的所有列的主数据,因此我做了。有什么办法吗?你为什么不把这个列添加到这个select,select PartnerId,CountryId,count*Total中,不按PartnerId,CountryId分组?@FerdinandGaspar:我想你是对的,如果我想按国家分组,我该怎么办?所以,如果我想要像国家X所有合作伙伴所有日期=总计数这样的东西,你能在上面的样本数据上提供一个.Local\u Closed\u Calendar\u Month吗?谢谢,我想我第一次就有了,只是把自己弄糊涂了。谢谢,我想我第一次就有了,只是把自己弄糊涂了