Получить отличную строку из таблицы
У меня есть таблица Masterproduct, и я хочу, чтобы получить только одну строку для каждого «ProductDivisionID» вместе с чеком ли «StatusID» любой строке 2 для конкретного 'ProductDivisionID'
Получить отличную строку из таблицы
У меня есть таблица Masterproduct, и я хочу, чтобы получить только одну строку для каждого «ProductDivisionID» вместе с чеком ли «StatusID» любой строке 2 для конкретного 'ProductDivisionID'
Если я правильно прочитал ваш вопрос, вам нужен список значений productDivisionID
для тех разделов, где в любой строке есть StatusID
из 2
. В этом случае, вы можете использовать агрегацию по подразделениям, и подсчитать количество вхождений:
SELECT productDivisionID
FROM Masterproduct
GROUP BY productDivisionID
HAVING SUM(CASE WHEN StatusID = 2 THEN 1 ELSE 0 END) > 0
Или еще проще, просто использовать WHERE
условия для удаления записей, где StatusID
не 2
, а затем SELECT DISTINCT
, чтобы получить перечень подразделений:
SELECT DISTINCT productDivisionID
FROM Masterproduct
WHERE StatusID = 2
Это дает столбцы ProductID как максимальное значение и StatusID как 2 для каждого productDivisionID
SELECT productDivisionID, MAX(productID) as productID , MAX(StatusID) As StatusID
FROM Masterproduct
WHERE StatusID = 2
GROUP BY productDivisionID
, если вы хотите, чтобы product_id также был выбран, вы используете функцию GROUP BY и агрегацию для требования, чтобы она не работала просто, если вы публикуете свои выходные данные, я могу предложить ее правильно. – Susang