Ho una tabella CommentsTable
con colonne come CommentA, CommentB, CommentC, CommentD, CommentE
.Più valori di colonna in una singola colonna come valore separato da virgola
Tutte le colonne dei commenti sono VARCHAR (200)
, per impostazione predefinita tutte le colonne sono anche NULL
.
I dati si presenta come:
CommentId CommentA CommentB CommentC CommentD CommentE
---------------------------------------------------------------------
12345 NULL C 001 C 002 NULL C 003
45678 C 005 NULL NULL C 007 NULL
67890 C 010 NULL C 011 C 012 NULL
36912 C 021 C 023 C 024 C 025 C 026
ho bisogno di evitare i valori nulli e valori rimanenti vengono concatenate con comma
.
Quindi, i risultati attesi come:
CommentId CommetDetails
-------------------------------
12345 C 001, C 002, C 003
45678 C 005, C 007
67890 C 010, C 011, C 012
36912 C 021, C 023, C 024, C 025, C 026
ho provato con semplice query: si è verificato
SELECT CommentId, ISNULL(CommentA, '') + ', ' + ISNULL(CommentB, '') + ', ' +
ISNULL(CommentC, '') + ', ' + ISNULL(CommentD, '') + ', ' +
ISNULL(CommentE, '') [CommentDetails]
FROM CommentsTable
WHERE ...... --Some conditions
Ma gli indesiderati comma
, così aggiunto IIF
SELECT CommentId,
IIF(ISNULL(CommentA, '') <> '', (CommentA + ', '), '') +
IIF(ISNULL(CommentB, '') <> '', (CommentB + ', '), '') +
IIF(ISNULL(CommentC, '') <> '', (CommentC + ', '), '') +
IIF(ISNULL(CommentD, '') <> '', (CommentD + ', '), '') +
ISNULL(CommentE, '') [CommentDetails]
FROM CommentsTable
WHERE ...... --Some conditions
Ma qui inoltre, lo comma
si è verificato nell'ultimo posizione per alcuni casi (se CommentD, CommetE
sono NULL
.
C'è un modo per raggiungere per risolvere tutti i casi.
aggiorna lo script sql fiddle con il tuo ultimo esempio seminando esattamente la situazione in cui hai una virgola indesiderata alla fine. –