A,B,C,D和E是表中的五列。我需要输出如:
A
newline
B
newline
C
newline
D
newline
E
但两列之间不能有两个换行符(如果一个为空),例如 -
A
newline
D
newline
E
因此,如果B列中没有数据,则不应该有与B对应的换行符。 现在我正在考虑使用If else循环的缩放器函数。有更好的方法吗?
感谢。
答案 0 :(得分:1)
我相信你可以使用CASE运营商 http://www.tizag.com/sqlTutorial/sqlcase.php
SELECT CASE WHEN Video_Title IS NOT NULL THEN
Video_Title + '\n'
ELSE
''
END +
CASE WHEN Author IS NOT NULL THEN
Author + '\n'
ELSE
''
END +
CASE WHEN URL IS NOT NULL THEN
URL + '\n'
ELSE
''
END
FROM Videos
这是我刚用自己的数据库尝试的东西,但我认为这样的事情应该可以解决问题:)
答案 1 :(得分:1)
DECLARE @CRLF CHAR(2)
SET @CRLF = CHAR(10)+ CHAR(13);
WITH t AS
(
SELECT 'A' AS A,'B' AS B, 'C' AS C, 'D' AS D, 'E' AS E UNION ALL
SELECT 'A' AS A,NULL AS B, NULL AS C, NULL AS D, 'E' AS E UNION ALL
SELECT NULL AS A,NULL AS B, NULL AS C, NULL AS D, NULL AS E
)
SELECT
ISNULL(STUFF(ISNULL(@CRLF + A,'') + ISNULL(@CRLF + B,'') + ISNULL(@CRLF + C,'') + ISNULL(@CRLF + D,'') +ISNULL(@CRLF + E,'') , 1, 2, ''),'')
FROM t