要把相同PRTNO的记录中的INVQTY为零,且MTLDMSW + MTLDMSL不是最大的记录删除,也就是每种PRTNO只留一个MTLDMSW+MTLDMSL为最大的记录和INVQTY不为零的记录 请问SQL要怎么写?

解决方案 »

  1.   

    图片看不见表结构:
    PRTNO      INVQTY     MTLDMSW        MTLDMSL
    M10001        0       150.00         200.00
    M10001        0       999.00         999.00
    M10001       10       100.00         150.00
    M10001       50       200.00         999.00
    M10001        0       500.00         300.00
    M10001       20       999.00         999.00
    M10002       20      1000.00        1000.00
    M10002        0       100.00         300.00
    M10002        0      1000.00         900.00
    M10002        5       300.00         200.00
    ......
    要把相同PRTNO的记录中的INVQTY为零,且MTLDMSW + MTLDMSL不是最大的记录删除,也就是每种PRTNO只留一个或几个MTLDMSW+MTLDMSL为最大的记录和INVQTY不为零的记录 请问SQL要怎么写?
      

  2.   

    图片看不见表结构:
    PRTNO      INVQTY     MTLDMSW        MTLDMSL
    M10001        0       150.00         200.00
    M10001        0       999.00         999.00
    M10001       10       100.00         150.00
    M10001       50       200.00         999.00
    M10001        0       500.00         300.00
    M10001       20       999.00         999.00
    M10002       20      1000.00        1000.00
    M10002        0       100.00         300.00
    M10002        0      1000.00         900.00
    M10002        5       300.00         200.00
    ......
    要把相同PRTNO的记录中的INVQTY为零,且MTLDMSW + MTLDMSL不是最大的记录删除,也就是每种PRTNO只留一个或几个MTLDMSW+MTLDMSL为最大的记录和INVQTY不为零的记录 请问SQL要怎么写?
      

  3.   

    delete from tablename a where INVQTY = 0 and MTLDMSW + MTLDMSL < (select max(MTLDMSW + MTLDMSL) from tablename where PRTNO = a.PRTNO)
      

  4.   

    delete from table_name where 
    mtldmsw + mtldmsl != (select max(mtldmsw + mtldmsl) from table_name) and invqty = 0