У меня есть стол CommentsTable
с колонками, как, CommentA, CommentB, CommentC, CommentD, CommentE
.Несколько значений столбцов в одном столбце как значение, разделенное запятой
Все столбцы комментариев - VARCHAR (200)
, по умолчанию все столбцы - NULL
.
Данные выглядит следующим образом:
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
Мне нужно, чтобы избежать нулевых значений, а остальные значения конкатенации с comma
.
Таким образом, ожидаемый результат, как:
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
Я попытался с простого запроса:
SELECT CommentId, ISNULL(CommentA, '') + ', ' + ISNULL(CommentB, '') + ', ' +
ISNULL(CommentC, '') + ', ' + ISNULL(CommentD, '') + ', ' +
ISNULL(CommentE, '') [CommentDetails]
FROM CommentsTable
WHERE ...... --Some conditions
Но нежелательные comma
являются не произошло, поэтому добавил 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
Но здесь также, comma
произошел в последнем по для некоторых случаев (если CommentD, CommetE
- NULL
.
Есть ли способ достичь решения для всех случаев.
обновите свой скрипт sql скрипта, в последнем примере высеваете именно ту ситуацию, когда у вас есть нежелательная запятая в конце. –