0

合計が 250 ドル以上の顧客による注文を探しています。次に、注文ごとに購入した実際の商品を比較し、100 ドル未満または 100 ドル未満の価値がある商品の数を確認する必要があります。

つまり、合計 5 つのアイテムを購入したとします。2つは少なくとも100ドルの価値があります。3つ少ないです。結果は次のようになります。

OrderID  LargeItems  SmallItems  Total
1112     2           3           5

だから、それは私が求めているものの大まかな例です.

今私は持っています:

--Total Items purchased in orders worth $250 or more
SELECT O.OrderID,COUNT(OP.Price) as 'Total'
FROM dbo.tblOrder O WITH (NOLOCK)
    INNER JOIN dbo.tblOrderProduct OP WITH (NOLOCK)
        ON O.OrderID=OP.OrderID
WHERE O.OrderDate BETWEEN '2011-01-01' AND '2013-01-01'
    and O.Total >= 250
group by O.OrderID
order by O.OrderID

簡単に判断できない場合:

  • OP.Price は、注文の個々の商品の価格です。
  • O.Total は注文合計です

大項目と小項目の列がありません。これらの個別のカウントもどのように入れることができますか?

ありがとう!追加情報が必要な場合はお尋ねください。

4

1 に答える 1

5

CASEこれを行うには、ステートメントを使用できます。

SELECT O.OrderID
       ,SUM(CASE WHEN OP.Price >= 100 THEN 1 ELSE 0 END)'LargeItems'
       ,SUM(CASE WHEN OP.Price < 100 THEN 1 ELSE 0 END)'SmallItems'
       ,COUNT(OP.Price) as 'Total'
FROM dbo.tblOrder O WITH (NOLOCK)
    INNER JOIN dbo.tblOrderProduct OP WITH (NOLOCK)
        ON O.OrderID=OP.OrderID
WHERE O.OrderDate BETWEEN '2011-01-01' AND '2013-01-01'
    and O.Total >= 250
group by O.OrderID
order by O.OrderID
于 2013-07-11T19:15:34.730 に答える