El documento explica cómo dar formato y agregar filtros a un reporte en SQL Server Reporting Services. Primero se diseña la consulta para obtener los datos deseados. Luego se agrega formato a las filas, como pintar de color rojo los apellidos que comiencen con "Ms.". También se agrega un filtro de país mediante un parámetro y un conjunto de datos adicional con una lista de países. Finalmente, se modifica la consulta principal para incluir una condición que filtre por el país seleccionado en el parámetro.
3. (local) o
nombre de PC
Usuario y Clave
de SQL Server
Nombre de la
base de datos
4.
5.
6. Consulta:
SELECT p.Title As Titulo,
ISNULL(p.FirstName,'')+' '+ISNULL(p.MiddleName,'')+' '+ISNULL(p.LastName,'') AS
NombreCompleto,
pp.PhoneNumber AS Telefono,
ea.EmailAddress AS Email,
a.AddressLine1 AS Direccion,
a.City AS Ciudad,
sp.Name AS Estado,
a.PostalCode AS CodigoPostal,
cr.Name AS Pais
FROM Person.Person AS p
INNER JOIN Person.BusinessEntityAddress AS bea ON bea.BusinessEntityID = p.BusinessEntityID
INNER JOIN Person.Address AS a ON a.AddressID = bea.AddressID
INNER JOIN Person.StateProvince AS sp ON sp.StateProvinceID = a.StateProvinceID
INNER JOIN Person.CountryRegion AS cr ON cr.CountryRegionCode = sp.CountryRegionCode
INNER JOIN Sales.Customer AS c ON c.PersonID = p.BusinessEntityID
LEFT OUTER JOIN Person.EmailAddress AS ea ON ea.BusinessEntityID = p.BusinessEntityID
LEFT OUTER JOIN Person.PersonPhone AS pp ON pp.BusinessEntityID = p.BusinessEntityID
7.
8.
9. Hasta aquí hemos diseñado el reporte, ahora vamos a darle Formato(color, tamaño)
14. Ahora vamos a agregar un filtro: Pais
Primero agregamos un nuevo conjunto de datos
15. Consulta:
--Los paises estan en la tabla Person.CountryRegion, y su llave primaria es tipo varchar
SELECT NULL AS CodigoPais,
'TODOS' AS Pais
UNION ALL
SELECT CountryRegionCode AS CodigoPais,
Name AS PAIS
FROM Person.CountryRegion
Explicación
El primer registro la consulta tiene como código NULL y de Valor a Mostrar TODOS, el NULL se usara más abajo con la
función COALESCE
UNION ALL se usa para juntar dos Consultas(SELECT) las cuales deben tener los mismos nombres de columnas(
CodigoPais y Pais)
16. Además tenemos que agregar un parámetro
Ponemos Tipo de Datos Texto porque la clave primaria(PK) de la tabla de Paises(Person.CountryRegion) es tipo
Varchar, si fuera int usar Entero, activamos Permitir NULL
19. SELECT p.Title As Titulo,
ISNULL(p.FirstName,'')+' '+ISNULL(p.MiddleName,'')+' '+ISNULL(p.LastName,'') AS
NombreCompleto,
pp.PhoneNumber AS Telefono,
ea.EmailAddress AS Email,
a.AddressLine1 AS Direccion,
a.City AS Ciudad,
sp.Name AS Estado,
a.PostalCode AS CodigoPostal,
cr.Name AS Pais
FROM Person.Person AS p
INNER JOIN Person.BusinessEntityAddress AS bea ON bea.BusinessEntityID = p.BusinessEntityID
INNER JOIN Person.Address AS a ON a.AddressID = bea.AddressID
INNER JOIN Person.StateProvince AS sp ON sp.StateProvinceID = a.StateProvinceID
INNER JOIN Person.CountryRegion AS cr ON cr.CountryRegionCode = sp.CountryRegionCode
AND cr.CountryRegionCode = COALESCE(@Pais,cr.CountryRegionCode)
INNER JOIN Sales.Customer AS c ON c.PersonID = p.BusinessEntityID
LEFT OUTER JOIN Person.EmailAddress AS ea ON ea.BusinessEntityID = p.BusinessEntityID
LEFT OUTER JOIN Person.PersonPhone AS pp ON pp.BusinessEntityID = p.BusinessEntityID
Explicación:
COALESCE(Parametro1,Parametro2)
Si el Parametro1 es null, se devuelve el Parametro2
Entonces si es NULL la condición seria
AND cr.CountryRegionCode =cr.CountryRegionCode Devuelve todos los paises