2012-10-10 13 views
5

Eventuali duplicati:
Include a blank row in query resultsSelezionando una riga vuota supplementare che non esiste

Vorrei aggiungere una riga vuota al mio set di risultati al vertice della mia query SQL .

La query che sto usando è questo:

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

Che cos'è una riga vuota? Supponendo che 'DOCID' sia un' int', definisci vuoto per un intero. –

+0

Oh, mi dispiace - una riga che dà un risultato vuoto per quella riga. –

risposta

7

Provare a usare union all

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

ma se voi non aggiungere intestazione, e se DOCID è int tipo, è necessario utilizzare union all e cast come di seguito

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

Prova questo:

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

Nota che quando si usa UNION, e tutte le altre operazioni set, le colonne devono essere abbinati a tipi, così devi fare l'alias dei primi due valori vuoti con PROFILETITLE e DOCID. E devi anche controllare i tipi delle due colonne per farli funzionare correttamente. Potrebbe essere necessario selezionare NULL anziché '' e 0.

+1

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

+0

Bella risposta .... – Seasoned

0

È possibile utilizzare SQL Union

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

È possibile sostituire sysibm.sysdummy1 con la tabella temporanea

0

un'unione tutto farebbe il lavoro

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

Si potrebbe aggiungere una "riga vuota" se tutte le colonne sono varchar e vuoti mezzi '' in questo modo :

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 
Problemi correlati