2011-03-31 97 views
0

我想連接兩個date列,將-置於值之間。連接兩列值

表:

Column A    | Column B 
------------------------|------------------------- 
2010-07-01 00:00:00.000 | NULL 
NULL     | 2011-01-12 00:00:00.000 
2006-04-01 00:00:00.000 | 2010-05-31 00:00:00.000 
NULL     | NULL 

查詢:

select L.ColumnA + ' - ' + L.Column B AS [Dates] 
from abc L 

它顯示NULL的所有字段,除非雙方中的列有像

2006-04-01 00:00:00.000-2010 - 05-31 00:00:00.000 

但是,最終輸出我需要一些數據是:

[Dates] 
-------------------- 
07/01/10 - 
04/01/06 - 05/31/10 
- 01/12/11 
<blank (for nulls)> 

回答

4

您需要將NULL值轉換爲空字符串。最起碼:

SELECT COALESCE(L.ColumnA, '') + '-' + COALESCE(L.ColumnB, '') AS [Dates] 
    FROM abc L 

然後,格式化日期,如下所示:

SELECT COALESCE(CONVERT(CHAR(8), L.ColumnA, 1), '') + '-' 
    + COALESCE(CONVERT(CHAR(8), L.ColumnB, 1), '') AS [Dates] 
    FROM abc L 
+0

感謝回答我....我想這個代碼,它的工作,但它讓錯誤的價值觀......哪裏在這兩列都有NULL,它應該顯示NULL,但默認情況下它顯示01/01/00-01/01/00,以及更多的位置,在那裏默認情況下,它假設01/01/00。 – Shahsra 2011-03-31 15:27:58

+0

@Shahsra:你真的希望你的輸出看起來像這樣嗎? '07/01/10 - NULL','NULL - 01/12/11','04/01/06 - 05/31/10','NULL - NULL' – 2011-03-31 15:30:08

+0

我剛剛修改了我的輸出...耶與上面提到的相同...而不是NULL我只需要空白空間..沒有NULL或沒有它應該'03/01/07 - '...空的空間... – Shahsra 2011-03-31 15:36:26