У меня есть довольно простой запрос, который по существу возвращает SUM
всего для сети счетов-фактур для каждого клиента, где была предоставлена определенная скидка.Список разделенных запятыми
Как часть этого, я хочу вернуть номера счетов, к которым применяется каждая скидка, в виде списка, разделенного запятыми.
Это важно, поскольку оно подается в другую часть программного обеспечения, которая принимает данные только в этом формате.
Я мог бы форматировать в Excel, так как это приведет к тому, что данные закончатся, однако я предпочел бы сделать это непосредственно в запросе.
Я получаю свою голову путаной, пытаясь использовать функцию FOR XML PATH
для этого.
Ниже приводится текущий запрос, который возвращает одну строку для каждого Discount Group, клиент, скидка% учитывая при сумме составляет
поле для номера счета-фактуры является invoice_header.ih_number
SELECT variant_discount_group.vdg_node_path AS 'Discount Group' ,
customer_detail.cd_statement_name AS 'Customer Name' ,
invoice_line_item.ili_discount_percent AS 'Discount' ,
SUM((CASE WHEN invoice_header.ih_credit = 1 THEN -1
ELSE 1
END) * invoice_line_item.ili_qty) AS 'Qty' ,
SUM((CASE WHEN invoice_header.ih_credit = 1 THEN -1
ELSE 1
END) * invoice_line_item.ili_net) AS 'Total Net'
FROM invoice_header
JOIN invoice_line_item ON invoice_line_item.ili_ih_id = invoice_header.ih_id
JOIN variant_detail ON variant_detail.vad_id = invoice_line_item.ili_vad_id
JOIN variant_setting ON variant_setting.vas_vad_id = variant_detail.vad_id
JOIN customer_detail ON customer_detail.cd_id = invoice_header.ih_cd_id
LEFT JOIN variant_discount_group ON variant_discount_group.vdg_id = variant_setting.vas_vdg_id
WHERE invoice_header.ih_datetime BETWEEN @DateFrom
AND @DateTo
AND ISNULL(variant_discount_group.vdg_node_path, '') LIKE @VDGroup
+ '%'
AND invoice_line_item.ili_discount_percent BETWEEN @DiscFrom
AND @DiscTo
GROUP BY variant_discount_group.vdg_node_path ,
customer_detail.cd_statement_name ,
invoice_line_item.ili_discount_percent
ORDER BY variant_discount_group.vdg_node_path ,
customer_detail.cd_statement_name ,
invoice_line_item.ili_discount_percent
вы можете обеспечить выборки данных – sam