qod*_*ods 7 sql t-sql sql-server pivot adventureworks
我想按性别统计城市,就像这样;
City GenderFCount GenderMCount
Redmond 10 20
Run Code Online (Sandbox Code Playgroud)
这是我的查询获取AdventureWorks数据库中的城市和性别
select Gender,City from HumanResources.Employee as t1
inner join HumanResources.EmployeeAddress as t2
on t1.EmployeeID = t2.EmployeeID
inner join Person.Address as t3
on t2.AddressID = t3.AddressID
Run Code Online (Sandbox Code Playgroud)
如果有可能,您可以通过多种方式显示解决方案,例如"PIVOT",sql函数(UDF),存储过程或其他方式.
谢谢
这是PIVOT查询,您可以将其转储到存储过程或udf中
select City, F as GenderFCount, M as GenderMCount
from(
select Gender,City
from HumanResources.Employee as t1
inner join HumanResources.EmployeeAddress as t2
on t1.EmployeeID = t2.EmployeeID
inner join Person.Address as t3
on t2.AddressID = t3.AddressID
) AS pivTemp
PIVOT
( count(Gender)
FOR Gender IN ([F],[M])
) AS pivTable
Run Code Online (Sandbox Code Playgroud)
UDF的示例
CREATE FUNCTION fnPivot()
RETURNS TABLE
AS
RETURN (
select City, F as GenderFCount, M as GenderMCount
from(
select Gender,City
from HumanResources.Employee as t1
inner join HumanResources.EmployeeAddress as t2
on t1.EmployeeID = t2.EmployeeID
inner join Person.Address as t3
on t2.AddressID = t3.AddressID
) AS pivTemp
PIVOT
( count(Gender)
FOR Gender IN ([F],[M])
) AS pivTable
)
GO
Run Code Online (Sandbox Code Playgroud)
现在你可以这样称呼它
SELECT * FROM dbo.fnPivot()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3241 次 |
| 最近记录: |