Tengo una instrucción de selección y quiero decir si esta declaración de selección no devuelve ninguna fila y luego ponga un '' en cada celda. ¿Cómo hago esto?SQL si no se devuelven las filas haga esto
Respuesta
Parece que todavía no obtiene todas las filas que desea. ¿Cierto? Creo que @Joe Sefanelli proporciona una parte importante de su solución, y luego menciona que necesita cambiar INNER a IZQUIERDA.
Entonces, dices que quieres mostrar todas las unidades en tu lista de unidades. Y, si no hay datos para una unidad, entonces muestre la unidad y los espacios en blanco para los datos que no existen.
Aquí hay una posible solución. Cambiar su cláusula FROM a lo siguiente:
FROM [dbo].[Unit] u
LEFT OUTER JOIN
(
SELECT *
FROM [dbo].[IUA] i
JOIN [dbo].[Reports] r ON r.[Report_ID] = i.[Report_ID]
JOIN [dbo].[State] s ON i.[St_ID] = s.[St_Id]
WHERE r.[Account] = [dbo].[fn_Get_PortalUser_AccountNumber](11-11)
AND r.[Rpt_Period] = '2126'
AND r.[RptName] = 'tfd'
AND r.[Type] = 'h'
) ir ON ir.[Unit_ID] = u.[Unit_ID]
LEFT JOIN [dbo].[UnitType] ut ON u.[UnitType] = ut.[UnitType]
WHERE u.[Unit] IN (SELECT [VALUE]
FROM dbo.udf_GenerateVarcharTableFromStringList(@Units, ','))
;
Con este cambio se obtendrá una lista de unidades que se encuentran en la lista @Units. Las uniones externas izquierdas incluirán los datos asociados con cada unidad, pero no excluirán las unidades si no hay datos asociados.
Esto realmente devuelve todos los períodos de informe que no funcionarían porque estoy tratando de obtener solo 2126. Hay datos para la unidad en diferentes períodos de informe pero no en este período de informe. Si muevo esto a la cláusula where, todavía no devuelve filas. – user380432
Vaya. leyó mal su comentario sobre la cláusula where. – bobs
Sí, creo que sí, pero esto no devuelve nada otra vez ... hmmm. – user380432
Prueba esto -
IF NOT EXISTS (SELECT 'x' FROM <TABLE> ....)
BEGIN
-- Your logic goes here
END
El problema es que podría tener 1 unidad que muestra datos y 1 unidad que no muestra datos, por lo tanto, esto solo mostraría los datos de una unidad, pero quiero que se muestren ambas unidades .... – user380432
@anicolais - Para su segunda unidad donde desea mostrar datos en blanco, ver la respuesta de tenfour. ¿Eso ayudaría? –
existe la consulta inicial en OP – user380432
select a, b, c from t
if @@rowcount = 0
select '' as a, '' as b, '' as c
Pero asegúrese de entender que ''
puede tener un tipo de datos diferente de columnas a
, b
, y c
.
Ponga su fila en blanco de selección en la parte inferior de una unión
select x.JobName , x.Description
from MasterJobList x
where x.IsCycleJob = 1
union all
select "" , ""
from MasterJobList x
where not exists
(
select 1
from MasterJobList x
where x.IsCycleJob = 1
)
Basado en el código publicado, creo que lo que busca es dejar en blanco las columnas de la tabla UnitType ya que es el único que se' re left-joining a. En ese caso use
ISNULL(ut.[Description], '') AS UnitType
Esto todavía no devuelve filas si digo u.number = 'e2499' simplemente no da filas. Necesito dar el número de unidad pero no datos. – user380432
Entonces algunas de sus combinaciones INNER actuales deben ser uniones IZQUIERDAS, dependiendo de la (s) tabla (s) en las que no encuentre una fila coincidente. Luego use ISNULL como en mi respuesta para poner en blanco esas columnas también. –
La tabla que no tiene una fila de coincidencia es IUA, así que no estoy seguro de qué haría aquí, ya que la mayoría tiene errores de conversión al hacer ISNULL – user380432
select top 1 isnull(max(col2),' ') as noNullCol from table1 where col1='x'
max devuelve un null
donde no tiene filas continuación isnull
función devuelve ' '
lugar un valor null
He aquí un ejemplo que utilizo para una sola columna - es fácil y sólo produce una fila en blanco si no hay coincidencias en el conjunto de datos.
select Company from customer where [email protected]
union
select '' where not exists (select 1 from customer where [email protected])
Esto crea una fila de blanco (s) cuando no hay coincidencias.
- 1. Devuelve un valor si no se encuentran filas SQL
- 2. jQuery - Si el elemento tiene clase, haga esto
- 3. cellForRowAtIndexPath no llamado; secciones devuelve 1 y las filas devuelven 4
- 4. ExecuteNonQuery for SELECT instrucción sql que no devuelve filas
- 5. Haga algo si no se encuentra nada con .find() mangosta
- 6. Cómo comprobar si SQLDataReader no tiene filas
- 7. ¿Cómo enumerar las filas devueltas en SQL?
- 8. SQL: encontrar diferencias entre las filas
- 9. SQL borrar todas las filas excepto algunos
- 10. Oracle SQL devuelve las filas de forma arbitraria cuando no se utiliza ninguna cláusula "order by"
- 11. SQL - Seleccione las primeras 10 filas solamente?
- 12. Las banderas en VB6 no devuelven un valor correcto
- 13. Django Haga ContentType No se requiere
- 14. TableLayoutPanel: No se pueden obtener correctamente las filas de contenido
- 15. SQL - Restando un valor de agotamiento de las filas
- 16. SQL - Devolver todas las filas, incluso si el recuento es cero para el elemento
- 17. SQL Server: comprobar si todas las filas existe en otra mesa
- 18. SQL: Encuentre filas donde Column contiene todas las palabras dadas
- 19. SQL Server Búsqueda de texto no encontrar mis filas
- 20. ¿Cómo hacer que SQL Server devuelva un valor por defecto de 0, si no existen filas?
- 21. Ocultar columna si todas las filas están vacías
- 22. SQL Insertar múltiples filas
- 23. combinación izquierda no devolver todas las filas
- 24. SQL Server: SUMA() de varias filas incluidos, en las cláusulas
- 25. sql - inserte si no existe
- 26. Cambiar el color de fondo en las filas, pero no en los encabezados de las filas
- 27. sql join return null si no se encuentra el valor
- 28. función exec no devuelve todas las filas
- 29. SQL Reordenamiento masivo de filas
- 30. sqlcmd no se ejecutará - ¿Es esto un problema de configuración?
En cada célula de qué? –
Ponga un '' en cada celda de qué? ¿Un informe de SSRS? ¿Una hoja de cálculo de Excel? –
Tengo 2 unidades. 1 tiene datos, y 1 no. Quiero mostrar los datos de 1 unidad, pero solo mostrar los espacios en blanco para todos los datos de otras unidades que no tienen datos. ¿Si eso tiene algún sentido? – user380432