0

複数の結果を返すこのクエリがあります。o.Customer_IDごとに1つの結果のみが表示されるように編集し、o.OrderPlaceServerTimeを使用して今日に最も近い順序にします。

これが私が持っているクエリです:

SELECT
    o.Order_ID,
    o.Customer_ID,
    o.OrderPlaceServerTime,
    o.CustomerOrderTotal
FROM 
    Orders o
    LEFT JOIN Order_LineDetails oln 
    ON oln.Order_ID = o.Order_ID
WHERE 
    o.OrderPlaceServerTime >= '2012-09-01 00:00:00'
AND o.OrderPlaceServerTime <= '2012-12-01 00:00:00'
AND o.CustomerOrderTotal >= '50'
AND oln.Product_ID = '75'

これを達成するために何を変更する必要がありますか?

4

2 に答える 2

1

o.Customer_IDごとに1つの結果しか得られないように編集したいと思います

したがって、最初に、対象となる注文を顧客IDでグループ化し、最大値またはOrderPlaceServerTimeを選択して、対象となる顧客IDの最新の注文を取得する必要があります。次に、これらのレコードを顧客IDの注文およびOrde​​rPlaceServerTimeと結合して、関心のある他の2つの属性を選択します。

SELECT
    o.Order_ID,
    o.Customer_ID,
    o.OrderPlaceServerTime,
    o.CustomerOrderTotal
FROM 
    Orders o
    JOIN (
        SELECT
            o.Customer_ID,
            MAX(o.OrderPlaceServiceTime) 'MaxOrderPlaceServiceTime'
        FROM 
            Orders o
            LEFT JOIN Order_LineDetails oln 
            ON oln.Order_ID = o.Order_ID
        WHERE 
            o.OrderPlaceServerTime >= '2012-09-01 00:00:00'
        AND o.OrderPlaceServerTime <= '2012-12-01 00:00:00'
        AND o.CustomerOrderTotal >= '50'
        AND oln.Product_ID = '75'
        GROUP BY o.Customer_ID
    ) AS A
    ON 
        o.Customer_ID = A.Customer_ID AND 
        o.OrderPlaceServiceTime = A.MaxOrderPlaceServiceTime
于 2012-12-03T15:35:17.193 に答える
0

私があなたが必要としているものを正しく理解していれば、これはクエリであるはずです:

    SELECT * FROM 

    ( SELECT
    o.Order_ID,
    o.Customer_ID,
    o.OrderPlaceServerTime,
    o.CustomerOrderTotal
    FROM 
        Orders o
        LEFT JOIN Order_LineDetails oln 
        ON oln.Order_ID = o.Order_ID
    WHERE 
        o.OrderPlaceServerTime >= '2012-09-01 00:00:00'
    AND o.OrderPlaceServerTime <= '2012-12-01 00:00:00'
    AND o.CustomerOrderTotal >= '50'
    AND oln.Product_ID = '75'    
    ORDER BY o.Customer_ID, o.OrderPlaceServerTime DESC ) AS tab1   

    GROUP BY o.Customer_ID;
于 2012-12-03T15:38:00.827 に答える