2012-10-10 18 views
5

可能重複:
Include a blank row in query results選擇一個額外的空行不存在

我想一個空行添加到我的結果集在我的SQL查詢的最頂端。

我使用的查詢是這樣的:

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

什麼是空行?假設'DOCID'是一個'int',爲整數定義爲空。 –

+0

哦,我很抱歉 - 一行給出了該行的空白結果。 –

回答

7

嘗試使用union all

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

,但如果你不會添加標題,如果DOCIDint類型,你必須使用union allcast如下

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

試試這個:

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

注意,使用UNION時,和所有其他的操作集,列在類型相匹配,所以您必須將前兩個空值與PROFILETITLEDOCID別名。爲了正常工作,您必須注意兩列的類型以及匹配。可能是您需要選擇NULL而不是''0

+1

是:[SQL-Fiddle測試](http://sqlfiddle.com/#!3/3144b/3) –

+0

尼斯的答案.... – Seasoned

0

您可以使用SQL Union

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

您可以用臨時表替換SYSIBM.SYSDUMMY1

0

工會都將做的工作

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

您可以添加一個「空行」,如果所有的列都varchar和空手段''這樣:

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 
相關問題