私は 2 つのテーブルを持っておりCustomerMaster
、EntBookings
今では顧客ごとに、テーブルにそれぞれの予約の記録がありEntBookings
ます。私が欲しいのは、すべての顧客の予約の最初の日付を見つけることです。
私が試したこと、
SELECT cm.CustomerCode,
cm.CustomerName,
MIN(eb.BookingDate) OVER(PARTITION BY eb.BookingByCustomer)
FROM EntBookings eb
INNER JOIN CustomerMaster cm
ON cm.CustomerCode = eb.BookingByCustomer
GROUP BY
cm.CustomerCode,
cm.CustomerName,
eb.BookingByCustomer,
eb.BookingDate
結果は次のようになります
Cust1 ABC 2013-01-24 00:00:00.000
Cust2 ABCD 2013-01-24 00:00:00.000
Cust2 ABCD 2013-01-24 00:00:00.000
Cust3 BCD 2013-01-25 00:00:00.000
Cust4 BCDE 2013-01-24 00:00:00.000
Cust7 DEF 2013-01-02 00:00:00.000
の理由がわかりませんがCust2
、2行表示されていますか? 1行だけ返すようにするにはどうすればよいですか?
こうすれば..
SELECT cm.CustomerCode,
cm.CustomerName,
MIN(eb.BookingDate) OVER(PARTITION BY eb.BookingDate)
FROM EntBookings eb
INNER JOIN CustomerMaster cm
ON cm.CustomerCode = eb.BookingByCustomer
GROUP BY
cm.CustomerCode,
cm.CustomerName,
eb.BookingByCustomer,
eb.BookingDate
私はこれを得る...
Cust7 DEF 2013-01-02 00:00:00.000
Cust1 ABC 2013-01-24 00:00:00.000
Cust2 ABCD 2013-01-24 00:00:00.000
Cust4 BCDE 2013-01-24 00:00:00.000
Cust3 BCD 2013-01-25 00:00:00.000
Cust2 ABCD 2013-02-13 00:00:00.000
この場合、私はまだ の 2 行を取得していますがCust2
、日付が間違っています。(最初のケースのように) そうあるべきですが、2013-01-24 00:00:00.000
2 行が返されています。したがって、これらのクエリは両方とも正しくありません。誰かが私が間違っていることを理解するのを手伝ってくれますか?