ВЫБЕРИТЕ ОТЛИЧНЫЙ на одном столбце

Проект Hamcrest только что выпустил 2.1 , и они переработали структуру пакета после тщательного рассмотрения . Обязательно следуйте процедуре обновления . Артефакт java-hamcrest 2.0.0.0 теперь считается неудачной попыткой .

246
задан Gringo Suave 17 May 2018 в 07:47
поделиться

3 ответа

Предполагается, что вы используете SQL Server 2005 или выше , вы можете использовать CTE с ROW_NUMBER ():

SELECT  *
FROM    (SELECT ID, SKU, Product,
                ROW_NUMBER() OVER (PARTITION BY PRODUCT ORDER BY ID) AS RowNumber
         FROM   MyTable
         WHERE  SKU LIKE 'FOO%') AS a
WHERE   a.RowNumber = 1
309
ответ дан 23 November 2019 в 03:04
поделиться

попробуйте следующее:

SELECT 
    t.*
    FROM TestData t
        INNER JOIN (SELECT
                        MIN(ID) as MinID
                        FROM TestData
                        WHERE SKU LIKE 'FOO-%'
                   ) dt ON t.ID=dt.MinID

РЕДАКТИРОВАТЬ
после того, как OP исправил свой выборочный вывод (раньше была только ОДНА строка результатов, теперь отображается вся), это правильный запрос:

declare @TestData table (ID int, sku char(6), product varchar(15))
insert into @TestData values (1 ,  'FOO-23'      ,'Orange')
insert into @TestData values (2 ,  'BAR-23'      ,'Orange')
insert into @TestData values (3 ,  'FOO-24'      ,'Apple')
insert into @TestData values (4 ,  'FOO-25'      ,'Orange')

--basically the same as @Aaron Alton's answer:
SELECT
    dt.ID, dt.SKU, dt.Product
    FROM (SELECT
              ID, SKU, Product, ROW_NUMBER() OVER (PARTITION BY PRODUCT ORDER BY ID) AS RowID
              FROM @TestData
              WHERE  SKU LIKE 'FOO-%'
         ) AS dt
    WHERE dt.RowID=1
    ORDER BY dt.ID
13
ответ дан 23 November 2019 в 03:04
поделиться
SELECT min (id) AS 'ID', min(sku) AS 'SKU', Product
    FROM TestData
    WHERE sku LIKE 'FOO%' -- If you want only the sku that matchs with FOO%
    GROUP BY product 
    ORDER BY 'ID'
7
ответ дан 23 November 2019 в 03:04
поделиться