2010-11-21 15 views
0

A、B、C、DおよびEは、表の5つの列です。私のような出力が必要です。SQL改行と書式設定データを挿入します。

A 
newline 
B 
newline 
C 
newline 
D 
newline 
E 

をしかし、例えばため、2列(1がNULLである場合)との間に2つの改行があることはできません -

A 
newline 
D 
newline 
E 

列Bのデータが存在しないのであればあるはずBに対応する改行がありません。 今は、If elseループを使ってスケーラー関数を考えています。もっと良い方法?

ありがとうございました。

答えて

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
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 
関連する問題