SQL Server - Ciclo que permita mostrar solo los datos de columnas con valores mayores que cero

 
Vista:

Ciclo que permita mostrar solo los datos de columnas con valores mayores que cero

Publicado por Jhonatan (1 intervención) el 12/10/2017 01:16:17
Buenas tardes,

Solicito su ayuda con el siguiente caso:

Tengo una tabla con 180 campos (90 de fecha y 90 de Valor)

Fecha_01. Valor_01 fecha_02 valor_02... Fecha_90 valor_90

En esos 90 campos solo 3 o 4 tienen valor, los demás vienen en 0.

Hay algún ciclo que me permita traer solo a 4 columnas los datos de fecha y Valor de cada uno de los 4 pagos que hace el cliente?


Lo hice por código valiendome de Unpivot y Pívot pero son muchos registros y la consulta tarda demasiado.

Quedo atento a cualquier ayuda. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ciclo que permita mostrar solo los datos de columnas con valores mayores que cero

Publicado por Isaias (4558 intervenciones) el 12/10/2017 17:00:27
Esta misma pregunta la pusiste en el grupo de SQL, por reglas de los foros, no se permite repetir una misma pregunta

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/98fdf8cc-80b9-4951-8d00-70957605a689/how-to-retreive-only-columns-which-having-at-least-one-not-null-value-in-any-row?forum=transactsql

Otro ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
declare @col varchar(255), @cmd varchar(max)
 
DECLARE getinfo cursor for
SELECT c.name FROM sys.tables t JOIN sys.columns c ON t.Object_ID = c.Object_ID
WHERE t.Name = 'ADDR_Address'   -- Aqui el nombre de su tabla
 
OPEN getinfo
FETCH NEXT FROM getinfo into @col
 
WHILE @@FETCH_STATUS = 0
BEGIN
    SELECT @cmd = 'IF NOT EXISTS (SELECT top 1 * FROM ADDR_Address WHERE [' + @col + '] IS NOT NULL) BEGIN print ''' + @col + ''' end'
	-- Vea que internamente se hace referencia a su tabla, en este caso ADDR_Adress
    EXEC sp_executesql @cmd
 
    FETCH NEXT FROM getinfo into @col
END
 
CLOSE getinfo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar