services funciones expresiones sql sql-server sql-server-2005 tsql

sql - funciones - expresiones rdlc



Resumir datos agregados (5)

Esto se llama pivoteo de mesa. En tu caso simple, solo hay dos columnas; en general, podría haber 200 países más o menos, en cuyo caso, el pivote se vuelve bastante difícil.

Hay muchos recursos en línea que describen cómo hacerlo: Google para ''tabla dinámica sql''.

Tengo una tabla como la siguiente:

SoftwareName Count Country Project 15 Canada Visio 12 Canada Project 10 USA Visio 5 USA

¿Cómo lo consulto para darme un resumen como ...

SoftwareName Canada USA Total Project 15 10 25 Visio 12 5 17

¿Cómo hacer en T-SQL?


OK ... Aquí está cómo hacerlo usando PIVOT:

SELECT Softwarename, Canada, USA, Canada + USA As TOTAL from SoftwareDemo PIVOT ( SUM([Count]) FOR Country IN (Canada, USA) ) AS x Softwarename Canada USA TOTAL -------------------------------------------------- ----------- ----------- ----------- Project 15 10 25 Visio 12 5 17 (2 row(s) affected)



SELECT SoftwareName, SUM( CASE Country WHEN ''Canada'' THEN [Count] ELSE 0 END ) AS Canada, SUM( CASE Country WHEN ''USA'' THEN [Count] ELSE 0 END ) AS USA, SUM( [Count] ) AS Total FROM [Table] GROUP BY SoftwareName;