首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中计数是否或计数位置

在SQL中计数是否或计数位置
EN

Stack Overflow用户
提问于 2013-12-19 18:45:20
回答 3查看 151关注 0票数 4

我有一套合同的数据集,以及合同工作人员的国籍。样品如下。

代码语言:javascript
复制
Contract  Country
GTT001    DE
GTT001    DE
GTT001    US
BFF333    US
BFF333    US
BFF333    DE
HHH222    GB
HHH222    GB
HHH222    GB

我需要一个查询,它将统计每个国家的每一份合同的工作人数。因此,它将产生如下所示的表格:

代码语言:javascript
复制
         DE   US    GB
GTT001   2    1     0
BFF333   1    2     0
HHH222   0    0     3

我在Access 2010工作。是否有一个可以让我根据条件计算值的国家或类似的国家?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-19 18:58:55

代码语言:javascript
复制
   DECLARE @Pivotcols AS NVARCHAR(MAX),
        @query  AS NVARCHAR(MAX)
      select @Pivotcols = STUFF((SELECT distinct N',' + QUOTENAME([Country]) 
                from [Contract]
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'')

    select @Pivotcols

    set @query = N'SELECT [Contract], ' + @Pivotcols + N' 
        from 
        (
           SELECT   [Contract]
  ,[Country]
   FROM [TEST_DB].[dbo].[Contract]

        ) sourceTable
        pivot 
        (
            Count([Country])
            for [Country] in (' + @Pivotcols + N')
        ) p '

  execute sp_executesql @query;

核心查询

代码语言:javascript
复制
  SELECT * from
  (SELECT   [Contract]
     ,[Country]
   FROM [TEST_DB].[dbo].[Contract]
  ) sT
    pivot 
        (
            Count([Country])
            for [Country] in ([DE],[US],[GB])
        ) p
票数 0
EN

Stack Overflow用户

发布于 2013-12-19 18:51:11

您希望同时使用合同和国家来使用组。这会给你一个这样的列表:

代码语言:javascript
复制
Contract  Country   Count
GTT001    DE        2
GTT001    US        1
BFF333    US        2
BFF333    DE        1
HHH222    GB        3

然后,您希望将这些值转换为您想要的格式。0年代还会失踪..。

票数 3
EN

Stack Overflow用户

发布于 2013-12-19 18:53:25

支点可以工作,它有点复杂,但是可以按原始sql进行分组,例如:

选择合同,国家,计数(*)

来自YourTable

按合同分组,国家

按国家排序

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20689346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档