2010-11-21 14 views
0

A, B, C, D ve E bir tabloda beş sütuntur. Ben gibi çıktı gerekir:SQL Yeni satırları ve biçimlendirme verilerini ekleme

A 
newline 
B 
newline 
C 
newline 
D 
newline 
E 

Ama için eg, (bir boş ise) iki sütun arasında iki yeni satırlar olamaz - varsa

A 
newline 
D 
newline 
E 

Yani B sütunundaki veri yoktur olmalı B. 'a karşılık gelen yeni satır yok Şu anda başka bir döngü varsa bir ölçekleyici işlevi düşünüyorum. Daha iyi bir yol var mı?

Teşekkürler.

cevap

1

İnanıyorum CASE operatörünü kullanabilirsiniz. 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 

Bu
ben sadece kendi veritabanı ile denenmiş bir şeydir, ama böyle bir şey hile yapmak gerektiğini düşünüyorum :)

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 
İlgili konular