【发布时间】:2015-02-19 10:44:26
【问题描述】:
我有一个相当基本的查询,它基本上为每个客户返回一个SUM 总发票行净额,其中给出了一定的折扣。
作为其中的一部分,我想以逗号分隔列表的形式返回每个折扣适用的发票编号。
这是必不可少的,因为它被输入到另一个只接受这种格式数据的软件中。
我可以在 Excel 中格式化,因为这是数据最终的位置,但我宁愿直接在查询中进行。
试图使用FOR XML PATH 函数来执行此操作让我头晕目眩。
下面是当前查询,它返回每个折扣组、客户、折扣百分比以及总和
发票编号字段为 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
【问题讨论】:
-
能否提供样本数据
标签: sql sql-server tsql