Нахождение значения MIN с другими условиями Teradata - PullRequest
0 голосов
/ 04 августа 2020

Я использую Teradata SQL.

У меня есть таблица с этими столбцами orgprice - исходная цена sprice - цена продажи - дата продажи

Мне нужно найти * дату самая ранняя продажа в базе данных, где продажная цена товара не равнялась исходной цене товара *

Я пробовал использовать MIN следующим образом:

SELECT MIN(saledate)
FROM trnsact
WHERE orgprice <> sprice

, но это просто вернуло минимальное проданное значение в целом, предложение where было проигнорировано.

Как мне это сделать?

Ответы [ 3 ]

1 голос
/ 04 августа 2020

Простая задача для ранжирования:

SELECT *
FROM trnsact
WHERE orgprice <> sprice
QUALIFY
   ROW_NUMBER()
   OVER (-- PARTITION BY item -- ?
         ORDER BY saledate) = 1

Для одной строки вы также можете использовать TOP:

SELECT TOP 1 *
FROM trnsact
WHERE orgprice <> sprice
ORDER BY saledate
1 голос
/ 04 августа 2020

Предположительно, ваша таблица также имеет столбец «элемент» для определения элемента. Если это так, вам просто нужно предложение GROUP BY:

SELECT item, MIN(saledate)
FROM trnsact
WHERE orgprice <> sprice
GROUP BY item;
1 голос
/ 04 августа 2020

Вы можете попробовать следующее -

SELECT col1,col2,MIN(case when orgprice <> sprice then saledate end)
FROM trnsact 
group by col1, col2
...