1

私は次のようなテーブル Sales を持っています:

CLIENT, PRODUCT, SALEDATE
Peter, Phone, 2013/02/01
Peter, Phone, 2012/11/15
Peter, Phone, 2010/01/01

私は LastSale という名前のこのビューを持っています:

SELECT Client, Product, MAX(SaleDate)
FROM Sales
GROUP BY Client, Product

このビューを実行すると、結果は次のようになります。

Peter, Phone, 2013/02/01

今私の問題は、たとえば、SaleDate でフィルタリングするプログラムでこのビューを使用していることです。

SELECT *
FROM LastSale
WHERE SaleDate < '2013/01/01'

MAX(SaleDate) が < '2013/01/01' ではないため、この SQL では結果が得られませんが、要求に適合する日付 (2012/11/15) があります。

ビューの HAVING 句を使用してこれを実行できることはわかっていますが、私のプログラムではビューにアクセスしているため、変更できません。私が望む結果を得る方法はありますか?

事前に感謝し、私の下手な英語を許してください。

4

3 に答える 3

0

私がそれを正しく理解している場合は、ビューからではなく、元のテーブルから選択する必要があります。

SELECT *
FROM Sales
WHERE SaleDate < '2013/01/01'
于 2013-02-18T11:35:59.747 に答える
0

MAX(saledate) を使用すると、自動的に最大値 (1 行) のみが表示されます

これを試して

    SELECT Client, Product,SaleDate
    FROM Sales
    WHERE SaleDate < '2013-01-01'

デモはこちら

グループ化する場合はClient、これを試して個別のクライアントを指定してください

 SELECT Client, Product,SaleDate
 FROM Sales
 WHERE SaleDate < '2013-01-01'
 group by Client

デモはこちら

于 2013-02-18T11:44:45.810 に答える