我有一套合同的数据集,以及合同工作人员的国籍。样品如下。
Contract Country
GTT001 DE
GTT001 DE
GTT001 US
BFF333 US
BFF333 US
BFF333 DE
HHH222 GB
HHH222 GB
HHH222 GB我需要一个查询,它将统计每个国家的每一份合同的工作人数。因此,它将产生如下所示的表格:
DE US GB
GTT001 2 1 0
BFF333 1 2 0
HHH222 0 0 3我在Access 2010工作。是否有一个可以让我根据条件计算值的国家或类似的国家?
发布于 2013-12-19 18:58:55
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;核心查询
SELECT * from
(SELECT [Contract]
,[Country]
FROM [TEST_DB].[dbo].[Contract]
) sT
pivot
(
Count([Country])
for [Country] in ([DE],[US],[GB])
) p发布于 2013-12-19 18:51:11
您希望同时使用合同和国家来使用组。这会给你一个这样的列表:
Contract Country Count
GTT001 DE 2
GTT001 US 1
BFF333 US 2
BFF333 DE 1
HHH222 GB 3然后,您希望将这些值转换为您想要的格式。0年代还会失踪..。
发布于 2013-12-19 18:53:25
支点可以工作,它有点复杂,但是可以按原始sql进行分组,例如:
选择合同,国家,计数(*)
来自YourTable
按合同分组,国家
按国家排序
https://stackoverflow.com/questions/20689346
复制相似问题