2012-10-10 28 views
5

Duplicar posible:
Include a blank row in query resultsSelección de una fila vacía adicional que no existe

Me gustaría añadir una fila vacía a mi conjunto de resultados en la parte superior de mi consulta SQL .

La consulta que estoy usando es la siguiente:

SELECT 
    PROFILETITLE, DOCID 
FROM 
    PROFILES 
WHERE 
    COMPANYCODE = ? 
ORDER BY 
    PROFILETITLE 
+0

¿Qué es una fila vacía? Suponiendo que 'DOCID' es un' int', defina empty para un entero. –

+0

Oh, lo siento, una fila que da un resultado en blanco para esa fila. –

Respuesta

7

Intente utilizar union all

SELECT null as PROFILETITLE, null as DOCID 
UNION ALL 
SELECT PROFILETITLE, DOCID 
FROM PROFILES 
WHERE COMPANYCODE=? 
ORDER BY PROFILETITLE 

pero si usted no añadir cabecera, y si DOCID es int tipo, hay que utilizar union all y cast como a continuación

SELECT 'PROFILETITLE' as PROFILETITLE, 'DOCID' as DOCID 
UNION ALL 
SELECT PROFILETITLE, CAST (DOCID AS varchar(30)) 
FROM PROFILES 
WHERE COMPANYCODE=? 
ORDER BY PROFILETITLE 
4

Prueba esto:

SELECT '' AS PROFILETITLE, 0 AS DOCID 
UNION ALL 
SELECT PROFILETITLE, DOCID 
FROM PROFILES WHERE COMPANYCODE = ? 
ORDER BY PROFILETITLE 

Tenga en cuenta que cuando se utiliza UNION, y todas las demás operaciones de conjuntos, las columnas tienen que ser emparejado en tipos, por lo debe alias los primeros dos valores vacíos con PROFILETITLE y DOCID. Y también debe observar los tipos de las dos columnas para que coincidan para que funcionen correctamente. Puede ser que necesite seleccionar NULL en lugar de '' y 0.

+1

sí: [SQL-Fiddle test] (http://sqlfiddle.com/#!3/3144b/3) –

+0

Nice Answer .... – Seasoned

0

Puede utilizar SQL Union

SELECT PROFILETITLE, DOCID 
FROM PROFILES 
WHERE COMPANYCODE=? ORDER BY PROFILETITLE 
UNION ALL 
SELECT 0, '' 
FROM SYSIBM.SYSDUMMY1 

Puede reemplazar SYSIBM.SYSDUMMY1 con su tabla temporal

0

una unión de todo haría el trabajo

SELECT 
'' as PROFILETITLE, 
'' as DOCID 
UNION ALL 
SELECT PROFILETITLE, DOCID 
FROM PROFILES 
WHERE COMPANYCODE=? ORDER BY PROFILETITLE 
3

Se podría añadir una "fila vacía" si todas las columnas están vacías y varchar medios '' de esta manera :

SELECT PROFILETITLE, DOCID 
FROM PROFILES 
WHERE ... 

UNION ALL 

SELECT '' AS PROFILETITLE, '' AS DOCID 

ORDER BY 
    CASE WHEN PROFILETITLE='' AND DOCID='' THEN 0 ELSE 1 END ASC 
, PROFILETITLE ASC 
Cuestiones relacionadas