代码之家  ›  专栏  ›  技术社区  ›  Faye D.

选择具有该表特定字段的不同值的表的值

  •  0
  • Faye D.  · 技术社区  · 3 年前

    假设这个DB表:

    DECLARE @SUBSTITUTE TABLE(SUBSTITUTECODE varchar(25), COLORCODE varchar(15), SIZEPOS smallint);
    
    INSERT INTO @SUBSTITUTE(SUBSTITUTECODE, COLORCODE, SIZEPOS) VALUES
    ('002252200005001', 'BLK', 2),
    ('002252200005002', 'BLK', 3),
    ('002252200005004', 'BLK', 5),
    ('002252200005005', 'BLK', 6),
    ('002252200005006', 'BLK', 10),
    ('002252200005007', 'BLK', 11),
    ('0022522005003', 'BLK', 4),
    ('0022522005004', 'BLK', 5);
    

    我想得到所有 SUBSTITUTECODE , COLORCODE , SIZEPOS 哪里 SIZEPOS 是唯一的-对每个重复值进行第一次迭代。

    替代代码 彩色编码 SIZEPOS
    002252200005001 BLK 2.
    002252200005002 BLK 3.
    002252200005004 BLK 5.
    002252200005005 BLK 6.
    002252200005006 BLK 10
    002252200005007 BLK 11
    0022522005003 BLK 4.

    最相似的 question 来自MySQL

    提前谢谢!

    0 回复  |  直到 3 年前
        1
  •  0
  •   Ronen Ariely    3 年前

    请检查这是否能满足您的需求

    DECLARE @SUBSTITUTE TABLE(SUBSTITUTECODE varchar(25), COLORCODE varchar(15), SIZEPOS smallint);
    
    INSERT INTO @SUBSTITUTE(SUBSTITUTECODE, COLORCODE, SIZEPOS) VALUES
    ('002252200005001', 'BLK', 2),
    ('002252200005002', 'BLK', 3),
    ('002252200005004', 'BLK', 5),
    ('002252200005005', 'BLK', 6),
    ('002252200005006', 'BLK', 10),
    ('002252200005007', 'BLK', 11),
    ('0022522005003', 'BLK', 4),
    ('0022522005004', 'BLK', 5);
    
    ;With MyCTE AS (
        SELECT SUBSTITUTECODE, COLORCODE, SIZEPOS
            , RN = row_number() over (partition by SIZEPOS order by SUBSTITUTECODE) -- I assume that "first" you mean when ordering by SUBSTITUTECODE
        FROM @SUBSTITUTE
    )
    SELECT SUBSTITUTECODE, COLORCODE, SIZEPOS
    FROM MyCTE
    WHERE RN = 1