-1

我正在使用 Teradata SQL。

我有一张包含这些列的表格 orgprice - 原价 sprice - 销售价格 saledate - 销售日期

我需要在数据库中找到物品的销售价格不等于物品的原始价格的最早销售日期*

我尝试像这样使用 MIN:

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

但这只是总体上返回了 min saledate 值,where 子句被忽略了。

我该怎么做呢 ?

4

3 回答 3

1

排名的简单任务:

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
于 2020-08-04T10:29:13.677 回答
1

Presumably, your table also has an "item" column to define the item. If so, you just need a GROUP BY clause:

SELECT item, MIN(saledate)
FROM trnsact
WHERE orgprice <> sprice
GROUP BY item;
于 2020-08-04T11:14:18.783 回答
1

你可以试试下面的 -

SELECT col1,col2,MIN(case when orgprice <> sprice then saledate end)
FROM trnsact 
group by col1, col2
于 2020-08-04T09:26:03.250 回答