【发布时间】:2016-01-19 16:39:15
【问题描述】:
所以我在http://sqlfiddle.com/#!6/5836b(类似)和下面有这个表结构。 PForecast 表将对顶级(父)productsku 进行预测。一旦我获得给定期间的预测项目列表,我需要检索具有最高优先级 (Ppriority) 编号的子项的产品详细信息(对于该父 sku)。还想在单独的列中列出所有其他子 sku(可选)。
create TABLE PForecast (ID INT, sku INT, qty int, entrydate datetime);
INSERT INTO PForecast (ID, sku, qty, entrydate)
VALUES(10, 29490, 1, '2016-09-04 00:00:00.000'),
(19, 112407, 1, '2016-09-04 00:00:00.000'),
(11, 112407, 1, '2016-11-14 00:00:00.000'),
(12, 112344, 12, '2016-01-24 00:00:00.000'),
(13, 112344, 17, '2016-02-05 00:00:00.000'),
(14, 112344, 11, '2016-06-03 00:00:00.000'),
(15, 264856, 7, '2016-05-09 00:00:00.000'),
(16, 26480, 9, '2016-07-18 00:00:00.000'),
(17, 264856, 4, '2016-09-27 00:00:00.000'),
(18, 29490, 2, '2016-12-02 00:00:00.000');
create TABLE AllProd2 (sku INT, ID INT, descrip varchar(100), dept varchar(100),
SubDept varchar(100), class varchar(100), SubClass varchar(100),
Vcode INT, PID INT, Ppriority INT, parentFlag VARCHAR(1));
INSERT INTO AllProd2 (sku, ID, descrip, dept, SubDept, class, SubClass, Vcode, PID, Ppriority, parentFlag)
VALUES
(169243, 21177, '14 DIA PC/RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043419, 1, 'C'),
(136643, 21394, '14 DIA PC/RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043419, 2, 'C'),
(112344, 1043419, '14 DIA PC/RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043419, NULL, 'P'),
(104516, 122, '14 DIA PC/RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043428, 2, 'C'),
(111508, 130, '14 DIA PC/RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043428, 1, 'C'),
(112407, 1043428, '14 DIA PC/RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043428, NULL, 'P'),
(115106, 17043838, '14 DIA PC/RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043428, 3, 'C'),
(161835, 116050567, '14 DIA PC/RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043428, 4, 'C'),
(238777, 1198119585, '14 DIA PC/RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043428, 5, 'C'),
(255210, 2092139762, '14 DIA PC/RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043555, 2, 'C'),
(264856, 1043555, '14 DIA PC/RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043555, NULL, 'P'),
(264863, 1043556, '14 DIA PC/RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043555, 1, 'C'),
(239124, 1995137332, '14 RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043890, 1, 'C'),
(266473, 1043889, '14 RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043890, 2, 'C'),
(266480, 1043890, '14 RD', 'abc', 'def', 'xyz', 'gty', 0004, 1043890, NULL, 'P'),
(26480, 10430, '14 PC/RD', 'abc', 'def', 'xyz', 'gty', 0007, 10430, NULL, 'P'),
(29490, 14480, '14 PC/RD hkj', 'abc', 'def', 'xyz', 'gty', 0004, 14480, NULL, 'N')
;
如果我可以使用数据集构建一个临时表会更好,因为我需要在此步骤之后获取更多信息并加入其他表。
感谢任何帮助。
【问题讨论】:
-
请提供示例或所需结果。目前尚不清楚您在寻找什么。
-
查询将从预测表中选择一个日期范围内的所有项目,从我的表设计中可以看出,预测只有父sku,没有子sku。因此,下一步是从产品表中获取子 sku(针对该父记录),并为详细预测构建一个新结果集。即 SKU 26480 在预测表中有 3 个条目,我的最终结果应该是这样的:
-
更新评论:查询将从预测中选择日期范围内的所有项目,正如您在小提琴中看到的那样,预测只有父 sku。下一步是从 prod 表中获取子 sku(针对该父记录),并为详细预测构建新的结果集。即 SKU 112344 在预测表中有 3 个条目,如果我查看产品表,则该 SKU 的父 ID 是 1043419。此查询应捕获排名最高的 Ppriority 并获取整行。所以我的最终结果应该是这样的: SKU:136643 ID: 21394 VCode: 4 ParentID: 1043419 ParentPriority: 2 ParentFlag: C
标签: sql-server tsql parent-child