2012-10-10 12 views
5

Powiel możliwe:
Include a blank row in query resultsWybór dodatkowy pusty wiersz, który nie istnieje

chciałbym dodać pusty wiersz do mojego wyniku położony na samym szczycie mojej kwerendy SQL .

Zapytanie używam to:

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

Co to jest pusty wiersz? Zakładając, że 'DOCID' jest' int', zdefiniuj puste dla liczby całkowitej. –

+0

Och, przepraszam - wiersz, który daje pusty wynik dla tego wiersza. –

Odpowiedz

7

spróbuje użyć union all

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

ale jeśli przyzwyczajenie dodać nagłówek, a jeśli DOCID jest int typ, trzeba użyć union all i cast jak poniżej

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

Spróbuj tego:

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

Należy pamiętać, że podczas korzystania UNION i wszystkie inne ustawienia i operacje, kolumny mają być dopasowane do typów, więc musisz pseudo pierwsze dwa puste wartości z PROFILETITLE i DOCID. I musisz uważać na typy obu kolumn, aby je dopasować, aby działały poprawnie. Może być konieczne wybranie NULL zamiast '' i 0.

+1

Tak: [Test z alfabetem SQL] (http://sqlfiddle.com/#!3/3144b/3) –

+0

Dobra odpowiedź .... – Seasoned

0

Można użyć SQL Union

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

Można zastąpić SYSIBM.SYSDUMMY1 z tabeli tymczasowej

0

unia wszystko by wykonać zadanie

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

Można dodać „pusty wiersz”, jeśli wszystkie kolumny są varchar i pustych środki '' w ten sposób :

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 
Powiązane problemy