簡體   English   中英

僅分一列

[英]DISTINCT to only one column

我正在使用一個查詢,並嘗試對其進行修改,以使其僅返回唯一的“ lodnum”,其中有兩個以上的“ lodnum”條目。

我研究了ROW_NUMBER()個OVER / PARTITIONS。 我只是似乎無法讓它做我想做的事。

查詢是:(很抱歉格式化)

SELECT i.lodnum,
      i.prtnum,
      i.lotnum,
      sum(i.untqty),
      i.ftpcod,
      i.invsts
      FROM inventory_view i,
               locmst m
      WHERE i.stoloc = m.stoloc
      AND m.arecod = 'PART-HSY'
      AND i.prtnum NOT IN (SELECT i2.prtnum
                                       FROM inventory_view i2,
                                                locmst m2
                                       WHERE i2.stoloc = m2.stoloc
                                       AND m2.arecod = 'PART-HSY'
                                       AND i2.lotnum = i.lotnum
                                       AND i2.invsts = i.invsts
                                       GROUP BY i2.prtnum
                                       HAVING COUNT(*) = 1)
      AND i.lodnum IN (SELECT i3.lodnum FROM inventory_view i3, locmst m3
                                       WHERE i3.stoloc = m3.stoloc
                                       AND m3.arecod = 'PART-HSY'
                                       AND i3.lotnum = i.lotnum
                                       AND i3.invsts = i.invsts
                                       GROUP BY i3.lodnum
                                       HAVING COUNT(*) > 1)

GROUP BY 
     i.lodnum,
    i.stoloc,
    i.prtnum,
    i.lotnum,
    i.ftpcod,
    i.invsts
ORDER BY 
    i.prtnum,
    i.lotnum,
    i.invsts

它看起來像:

with t as (
      YOUR QUERY HERE WITHOUT ORDER BY
     )
select t.*
from (select t.*, row_number() over (partition by lodnum order by lodnum) as seqnum
      from t
     ) t
where seqnum = 1
order by prtnum, lotnum, invsts;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM