在多个字段上不同,但在SQL Server上显示所有字段

在多个字段上不同,但在SQL Server上显示所有字段,sql,sql-server,distinct,Sql,Sql Server,Distinct,我有一个查询,结果如下 No date No.PO product type div price 1. 01-10-2012 | AAA1 | X1 | 1 | SBS | 100 2. 09-10-2012 | ABA1 | X1 | 2 | SBS | 150 3. 11-10-201

我有一个查询,结果如下

No    date           No.PO     product    type       div         price
1.      01-10-2012   |    AAA1  |     X1   |    1   |     SBS   |      100
2.      09-10-2012   |    ABA1  |     X1   |    2   |     SBS   |      150
3.      11-10-2012   |    ACC1  |     X1   |    1   |     SBS   |      110
4.      15-10-2012   |    ACD1  |     X1   |    1   |     DBS   |      115
5.      20-10-2012   |    ADA1  |     X1   |    1   |     SBS   |      112
6.      23-10-2012   |    AFA1  |     X1   |    2   |     SBS   |      160
7.      27-10-2012   |    AHA1  |     X1   |    1   |     SBS   |      120
No        date           No.PO     product    type        div         price
1.      27-10-2012   |    AHA1  |     X1   |    1   |     SBS   |       120
2.      23-10-2012   |    AFA1  |     X1   |    2   |     SBS   |       160
3.      15-10-2012   |    ACD1  |     X1   |    1   |     DBS   |       115
还有几千张唱片

结果应该是这样的

No    date           No.PO     product    type       div         price
1.      01-10-2012   |    AAA1  |     X1   |    1   |     SBS   |      100
2.      09-10-2012   |    ABA1  |     X1   |    2   |     SBS   |      150
3.      11-10-2012   |    ACC1  |     X1   |    1   |     SBS   |      110
4.      15-10-2012   |    ACD1  |     X1   |    1   |     DBS   |      115
5.      20-10-2012   |    ADA1  |     X1   |    1   |     SBS   |      112
6.      23-10-2012   |    AFA1  |     X1   |    2   |     SBS   |      160
7.      27-10-2012   |    AHA1  |     X1   |    1   |     SBS   |      120
No        date           No.PO     product    type        div         price
1.      27-10-2012   |    AHA1  |     X1   |    1   |     SBS   |       120
2.      23-10-2012   |    AFA1  |     X1   |    2   |     SBS   |       160
3.      15-10-2012   |    ACD1  |     X1   |    1   |     DBS   |       115
这是规则

产品类型和部门不同 只有我想显示的最后一个事务表示重复产品、类型和div数据中的最大日期 必须显示所有字段日期、采购订单号、产品、类型、部门和价格 希望我的描述现在清楚了


有人能帮我找到正确的查询吗?

请尝试查询并检查结果,仅需猜测

SELECT * FROM(
    SELECT
        ROW_NUMBER() OVER (Partition by [Type], [Div] ORDER BY [Date] DESC) RowNum,
        [Date], 
        [No.PO], 
        [Product], 
        [Type], 
        [Div], 
        [Price] 
    FROM TABLE_Name
)x WHERE RowNum=1 
ORDER BY [Date] DESC

我曾尝试使用lag实际模拟lag,因为我使用SQLServer2008来比较前一个值的product、type、div,但查询太复杂slow@Javaboy-请解释您的预期结果。为什么2012年10月27日是结果而2012年10月1日不是结果。如果我的描述不够清楚,很抱歉。我只想要在我的查询中显示的产品类型和div的distict的最后一笔交易你能在这里发布你的查询吗?不能在这里发布我自己的问题,因为我是一个新手,我会在这里发布,如果这不可读,很抱歉-->q1为按产品选择行数,日期描述为行,日期,noPO,产品,类型,div,从表中选择q1.*从q1左侧外部连接q1作为q1.row=qLg.row+1上的qLg,其中q1.productisnullqLg.product'-'或q1.typeisnullqLg.type'-'或q1.DIVISINULLQLG.div'-'按产品排序,日期描述我将尝试此方法。此方法有效,但使用密集秩,我使用行数。但仍然激励着我。谢谢techdo如果我上面的查询用这个方法花了大约20分钟,它会持续大约1分钟。还是太长了。