您的问题对我来说有点含糊,但我认为您是说您希望客户id 的给定购买的最低diff 与pID 无关。这是完成该任务的检查和后续查询。
以下是根据您提供的数据集得出的结果:
id Max_b_Date p_Date Min_Diff
1 2014-07-20 2014-07-20 0
2 2014-07-20 2014-07-20 0
2 2014-07-28 2014-08-01 -5
以及我用来在 Teradata 13.1 中重新创建您的问题的代码
CREATE MULTISET TABLE danf.table1
(
id INTEGER NOT NULL,
pID VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC,
b_Date DATE FORMAT 'MM/DD/YYYY' ,
p_Date DATE FORMAT 'MM/DD/YYYY' ,
Diff INTEGER
)
PRIMARY INDEX ( id );
INSERT INTO danf.table1 (id, pID, b_Date, p_Date, Diff) VALUES ( 1, '001', CAST('07/20/2014' AS DATE FORMAT 'MM/DD/YYYY'), CAST('07/20/2014' AS DATE FORMAT 'MM/DD/YYYY'), 0 );
INSERT INTO danf.table1 (id, pID, b_Date, p_Date, Diff) VALUES ( 1, '001', CAST('07/20/2014' AS DATE FORMAT 'MM/DD/YYYY'), CAST('07/20/2014' AS DATE FORMAT 'MM/DD/YYYY'), 0 );
INSERT INTO danf.table1 (id, pID, b_Date, p_Date, Diff) VALUES ( 1, '002', CAST('07/20/2014' AS DATE FORMAT 'MM/DD/YYYY'), CAST('07/20/2014' AS DATE FORMAT 'MM/DD/YYYY'), 0 );
INSERT INTO danf.table1 (id, pID, b_Date, p_Date, Diff) VALUES ( 2, '001', CAST('07/20/2014' AS DATE FORMAT 'MM/DD/YYYY'), CAST('07/20/2014' AS DATE FORMAT 'MM/DD/YYYY'), 0 );
INSERT INTO danf.table1 (id, pID, b_Date, p_Date, Diff) VALUES ( 2, '001', CAST('07/20/2014' AS DATE FORMAT 'MM/DD/YYYY'), CAST('08/01/2014' AS DATE FORMAT 'MM/DD/YYYY'), -12 );
INSERT INTO danf.table1 (id, pID, b_Date, p_Date, Diff) VALUES ( 2, '002', CAST('07/25/2014' AS DATE FORMAT 'MM/DD/YYYY'), CAST('08/01/2014' AS DATE FORMAT 'MM/DD/YYYY'), -8 );
INSERT INTO danf.table1 (id, pID, b_Date, p_Date, Diff) VALUES ( 2, '002', CAST('07/26/2014' AS DATE FORMAT 'MM/DD/YYYY'), CAST('08/01/2014' AS DATE FORMAT 'MM/DD/YYYY'), -7 );
INSERT INTO danf.table1 (id, pID, b_Date, p_Date, Diff) VALUES ( 2, '002', CAST('07/28/2014' AS DATE FORMAT 'MM/DD/YYYY'), CAST('08/01/2014' AS DATE FORMAT 'MM/DD/YYYY'), -5 );
INSERT INTO danf.table1 (id, pID, b_Date, p_Date, Diff) VALUES ( 2, '002', CAST('07/28/2014' AS DATE FORMAT 'MM/DD/YYYY'), CAST('08/01/2014' AS DATE FORMAT 'MM/DD/YYYY'), -5 );
SELECT
t1.id
,MAX(b_Date) AS Max_b_Date
,t1.p_Date
,MAX(t1.Diff) AS Min_Diff
FROM danf.table1 t1
GROUP BY
t1.id,
t1.p_Date;