0

次のようなテーブル(A)があります。

ID     Date
1      2012/01/12
2      2012/01/01
3      2012/01/03
4      2012/03/12

MINこのクエリの日付を取得したい場合は、どうすればよいgroup byですか?

select
  a.ID,
  MIN(a.DATE),
  b.name,
  c.price
FROM
  tablea a inner join tableb b on a.ID = b.ID
  inner join tablec c b.ID = c.ID
4

3 に答える 3

2

ウィンドウ関数が必要です。正しい式は次のとおりです。

select a.id,
       min(a.date) over () as mindate,
       b.name, c.price
. . .

これは、データの日付の最小値を取得することを意味します。パーティションがないため、すべてのデータを取得します。

于 2013-02-22T15:45:44.370 に答える
1

あなたが最小の日付を持っていたものを探しているなら、あなたはこれをすることができます:

select
  a.ID,
  a.DATE,
  b.name,
  c.price
FROM tablea a 
INNER JOIN
(
   SELECT Id, MIN(Date) AS MinDate 
   FROM tablea
   GROUP BY Id
) As minA ON a.date = mina.mindate AND a.id = mina.id
inner join tableb b on a.ID = b.ID
inner join tablec c b.ID = c.ID
于 2013-02-22T15:45:31.767 に答える
0
WITH recordList
as
(
    select  a.ID,
            a.DATE,
            b.name,
            c.price,
            DENSE_RANK() OVER (PARTITION BY a.ID
                                ORDER BY a.Date ASC) rn
    FROM    tablea a 
            inner join tableb b on a.ID = b.ID
            inner join tablec c b.ID = c.ID
)
SELECT  ID, DATE, name, Price
FROM    recordList
WHERE   rn = 1
于 2013-02-22T15:46:11.310 に答える