2011-03-31 68 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