Я использую SQL сервера FOR XML
заявление для того, чтобы объединить несколько строк в одну строку. Это будет учитывать любое количество строк с разными значениями в каждом.
IF OBJECT_ID(N'tempdb..#t') IS NOT NULL DROP TABLE #t
CREATE TABLE #t
(
customer_number INT,
note NVARCHAR(100),
loyaltystatus INT,
Tier_code INT
)
INSERT INTO #t SELECT 123, N'yes', NULL, NULL
INSERT INTO #t SELECT 123, N'yes', 1, NULL
INSERT INTO #t SELECT 123, N'yes', NULL, 1
INSERT INTO #t SELECT 123, N'something else', NULL, NULL
SELECT
customer_number,
STUFF(
(SELECT DISTINCT N',' + note
FROM #t AS s
WHERE s.customer_number = t.customer_number
ORDER BY N',' + note
FOR XML PATH(''), TYPE).value('.',N'nvarchar(max)')
,1,1,N'') AS note,
STUFF(
(SELECT DISTINCT N',' + CAST(loyaltystatus AS NVARCHAR(100))
FROM #t AS s
WHERE s.customer_number = t.customer_number
ORDER BY N',' + CAST(loyaltystatus AS NVARCHAR(100))
FOR XML PATH(''), TYPE).value('.',N'nvarchar(max)')
,1,1,N'') AS loyaltystatus,
STUFF(
(SELECT DISTINCT N',' + CAST(Tier_code AS NVARCHAR(100))
FROM #t AS s
WHERE s.customer_number = t.customer_number
ORDER BY N',' + CAST(Tier_code AS NVARCHAR(100))
FOR XML PATH(''), TYPE).value('.',N'nvarchar(max)')
,1,1,N'') AS Tier_code
FROM
#t AS t
GROUP BY customer_number
У вас есть 3 строки не 2 ряда –