我正在使用 Teradata SQL。
我有一张包含这些列的表格 orgprice - 原价 sprice - 销售价格 saledate - 销售日期
我需要在数据库中找到物品的销售价格不等于物品的原始价格的最早销售日期*
我尝试像这样使用 MIN:
SELECT MIN(saledate)
FROM trnsact
WHERE orgprice <> sprice
但这只是总体上返回了 min saledate 值,where 子句被忽略了。
我该怎么做呢 ?
我正在使用 Teradata SQL。
我有一张包含这些列的表格 orgprice - 原价 sprice - 销售价格 saledate - 销售日期
我需要在数据库中找到物品的销售价格不等于物品的原始价格的最早销售日期*
我尝试像这样使用 MIN:
SELECT MIN(saledate)
FROM trnsact
WHERE orgprice <> sprice
但这只是总体上返回了 min saledate 值,where 子句被忽略了。
我该怎么做呢 ?
排名的简单任务:
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
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;
你可以试试下面的 -
SELECT col1,col2,MIN(case when orgprice <> sprice then saledate end)
FROM trnsact
group by col1, col2