USE [JSDataMiddlePlatform]; GO /* Unified logical layer (temp-table based, no CREATE VIEW permission required). Week window = previous natural week: [start_of_last_week, start_of_this_week) */ DECLARE @week_start datetime2 = CAST(DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()) - 1, 0) AS datetime2); DECLARE @week_end datetime2 = CAST(DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0) AS datetime2); IF OBJECT_ID('tempdb..#filtered') IS NOT NULL DROP TABLE #filtered; SELECT a.id, NULLIF(a.undefined2, '') AS order_id, NULLIF(a.undefined1, '') AS inner_order_id, COALESCE(NULLIF(a.undefined8, ''), 'unknown') AS shop_name, NULLIF(a.undefined9, '') AS shop_code, NULLIF(a.undefined10, '') AS sku_id, NULLIF(a.undefined56, '') AS afs_type, NULLIF(a.undefined57, '') AS afs_reason, NULLIF(a.undefined58, '') AS afs_result, ISNULL(NULLIF(a.undefined62, ''), '') AS order_labels, TRY_CONVERT(decimal(18, 2), NULLIF(a.undefined20, '')) AS order_qty, TRY_CONVERT(decimal(18, 2), NULLIF(a.undefined30, '')) AS shipped_qty, TRY_CONVERT(decimal(18, 2), NULLIF(a.undefined47, '')) AS post_ship_apply_amount, TRY_CONVERT(decimal(18, 2), NULLIF(a.undefined50, '')) AS post_ship_return_amount, TRY_CONVERT(decimal(18, 2), NULLIF(a.undefined52, '')) AS post_ship_refund_amount, a.createdAt AS created_at, CASE WHEN CHARINDEX('-', ISNULL(a.undefined8, '')) > 1 THEN LEFT(a.undefined8, CHARINDEX('-', a.undefined8) - 1) ELSE 'unknown' END AS platform_name INTO #filtered FROM dbo.jst_goods_profit_kpi_items_afs AS a WITH (NOLOCK) WHERE a.createdAt >= @week_start AND a.createdAt < @week_end AND ISNULL(NULLIF(a.undefined2, ''), '') <> '' AND ISNULL(NULLIF(a.undefined62, ''), '') NOT LIKE '%配件%' AND ISNULL(NULLIF(a.undefined62, ''), '') NOT LIKE '%特殊单%'; -- 1) weekly overview SELECT MIN(created_at) AS data_min_time, MAX(created_at) AS data_max_time, COUNT(*) AS afs_record_count, COUNT(DISTINCT order_id) AS afs_order_count, SUM(ISNULL(order_qty, 0)) AS order_qty_sum, SUM(ISNULL(shipped_qty, 0)) AS shipped_qty_sum, SUM(ISNULL(post_ship_apply_amount, 0)) AS apply_amount, SUM(ISNULL(post_ship_return_amount, 0)) AS return_amount, SUM(ISNULL(post_ship_refund_amount, 0)) AS refund_amount FROM #filtered; -- 2) platform distribution SELECT platform_name, COUNT(*) AS afs_record_count, COUNT(DISTINCT order_id) AS afs_order_count, SUM(ISNULL(shipped_qty, 0)) AS shipped_qty_sum, SUM(ISNULL(post_ship_refund_amount, 0)) AS refund_amount FROM #filtered GROUP BY platform_name ORDER BY afs_record_count DESC; -- 3) shop top 20 SELECT TOP (20) shop_name, platform_name, COUNT(*) AS afs_record_count, COUNT(DISTINCT order_id) AS afs_order_count, SUM(ISNULL(shipped_qty, 0)) AS shipped_qty_sum, SUM(ISNULL(post_ship_refund_amount, 0)) AS refund_amount FROM #filtered GROUP BY shop_name, platform_name ORDER BY afs_record_count DESC; -- 4) reason top 20 SELECT TOP (20) ISNULL(NULLIF(afs_reason, ''), '未标注') AS afs_reason, COUNT(*) AS afs_record_count, SUM(ISNULL(shipped_qty, 0)) AS shipped_qty_sum, SUM(ISNULL(post_ship_refund_amount, 0)) AS refund_amount, SUM(ISNULL(post_ship_return_amount, 0)) AS return_amount FROM #filtered GROUP BY ISNULL(NULLIF(afs_reason, ''), '未标注') ORDER BY afs_record_count DESC; -- 5) type/result matrix SELECT ISNULL(NULLIF(afs_type, ''), '未标注') AS afs_type, ISNULL(NULLIF(afs_result, ''), '未标注') AS afs_result, COUNT(*) AS afs_record_count, SUM(ISNULL(shipped_qty, 0)) AS shipped_qty_sum FROM #filtered GROUP BY ISNULL(NULLIF(afs_type, ''), '未标注'), ISNULL(NULLIF(afs_result, ''), '未标注') ORDER BY afs_record_count DESC;