请参阅下面的DDL:分区由多个聚合列
CREATE TABLE Test (SupplierID int, CustomerID int, SupplierDate datetime, TestColumn1 varchar(10), TestColumn2 varchar(10))
INSERT INTO Test values (1,1, '2010-01-01', 'Apple', 'Banana')
INSERT INTO Test values (1,2, '2006-01-01', 'Pear', 'Grape')
INSERT INTO Test values (2,1, '2004-01-01', 'Carrot', 'Pea')
INSERT INTO Test values (2,2, '2004-01-01', 'Monday', 'Friday')
请参阅下面的SQL:
select SupplierID, CustomerID, Max(SupplierDate) over (partition by SupplierID), TestColumn1, TestColumn2 from test
结果如预期是:
1 1 2010-01-01 00:00:00.000 Apple Banana
1 2 2010-01-01 00:00:00.000 Pear Grape
2 1 2004-01-01 00:00:00.000 Carrot Pea
2 2 2004-01-01 00:00:00.000 Monday Friday
我想结果:
1 1 2010-01-01 00:00:00.000 Apple Banana
2 1 2010-01-01 00:00:00.000 Apple Banana
2 2 2006-01-01 00:00:00.000 Carrot Pea
1 2 2006-01-01 00:00:00.000 Carrot Pea
即Testcolumn1和TestColumn2需要包含在聚合中。有没有简单的方法来做到这一点与分区?我以前从未使用过分区。
查询应该获取最大供应商日期,然后返回表中供应商ID每行的最大供应商日期加上测试列1和测试列2。
查询需要返回表中的每一行。
所以你W¯¯蚂蚁重复每个组合的SupplierID和CustomerID的第一行两次? –
@ shree.pat18,我已经修正了这个问题,试图让它更清晰。你能再看一次吗? – w0051977
我已经完成了,请检查ans。 – AK47