sql - funcion - ¿Cómo especificar un orden para las columnas en una matriz?
pivot y unpivot sql server (7)
Tuve un problema similar pero no encontré una solución usando una matriz a tiempo, así que utilicé una tabla y puse la lógica necesaria de la matriz en mis sentencias SQL. No es lo mejor que se puede hacer, pero funciona, es lo suficientemente rápido y no tarda tanto en escribir.
Estoy trabajando en un informe de SQL Reporting Services (en VS.Net 2005) que muestra un recuento de datos diferentes en una matriz. Las columnas cuentan la cantidad de clientes en un determinado conjunto. Así que tengo varias columnas como estas: "1 empleador", "2-9 empleadores", "10-19 empleadores", etc.
El problema que tengo es que SQL Reporting Services ordena alfabéticamente las columnas en la matriz. Así que termino teniendo la columna "10-19" después de la columna "1 empleador" pero antes del "2-9".
¿Hay alguna forma de arreglar esto? O tal vez un truco para cambiar las etiquetas de las columnas a las que ordenan ¿verdad?
Gracias.
Esto puede ser un poco intrincado, pero tuvimos un problema similar y no hay forma de cambiar el SQL. Lo que hicimos fue crear un campo calculado en el conjunto de datos que devuelve un número para cada columna y ordenamos el grupo en ese número.
Entré en MATRIX -> PROPIEDADES -> GRUPOS. Luego, "moví" el GRUPO, quería que ordenara UP en la lista. Fui a VISTA PREVIA, y funcionó perfectamente. Incluso mantuvo el orden de mi columna igual.
Vaya a Editar grupo - Clasificación - Cambie la dirección para descender para la expresión.
Esto también se puede hacer agregando una nueva columna a la consulta para el orden de clasificación. A continuación, haga clic con el botón derecho en el grupo de columnas de la matriz y seleccione las propiedades del grupo. En el lado izquierdo, selecciona la clasificación. Desde aquí puede especificar otra columna para clasificar por lugar de encabezado de columna. No se necesita una fórmula personalizada.
Para un orden numérico distinto de un Tablix use la siguiente línea de código en la expresión.
= RunningValue (CountDistinct ("YourTableName"), Count, "YourTableName")
Hacemos muchos informes de SSRS y esto siempre fue un problema con mdx. Aquí hay una forma en que lo hacemos:
Establezca Ordenar en las Propiedades de Agrupación y Clasificación para ordenar por esta expresión:
=iif(Fields!DataSetField.Value = "ColumnName", "zzz", Fields!DataSetField.Value)
Donde "zzz" podría ser un número o lo que sea que necesite para ayudar a la clasificación y luego seleccione Dirección como base Ascendente o Descendente en esta expresión.