Ответ кажется довольно очевидным.Этот подзапрос возвращает два столбца:
(SELECT DISTINCT
t1.InvoiceNumber,
STUFF((SELECT DISTINCT '' + t2.Testname
FROM tb_PatientTestDetails t2
WHERE t1.InvoiceNumber = t2.InvoiceNumber
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 0, '') TestName
FROM
tb_PatientTestDetails t1)
Предположительно, вы намереваетесь что-то вроде этого:
SELECT PTD.InvoiceNumber, PL.PatientName, PTD.TestDate, PTD.Discount, PTD.Commission,
SUM(PTD.TestAmount) AS TestAmount,
SUM(PTD.TestAmount - (PTD.Commission + PTD.Discount)) AS RealAmount,
PTD.Remark, PL.PatientId,
STUFF((SELECT DISTINCT '' + t2.Testname
FROM tb_PatientTestDetails ptd2
WHERE ptd.InvoiceNumber = ptd2.InvoiceNumber
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 0, ''
)
) as tests
FROM tb_PatientList PL JOIN
tb_Patienttestdetails PTD
ON PTD.PatientId = PL.Id
GROUP BY PTD.InvoiceNumber, PL.PatientName, PTD.TestDate, PTD.Discount, PTD.Commission, PTD.Remark, PL.PatientId;