1

データベース内の 2 つの特定の日付の間で選択結合を作成しようとしています

これは私が正しい道を進んでいると感じていますが、間違っています

どうすればこれを機能させることができますか

SELECT --RTRIM(C.CustomerFirstName) + ' ' + LTRIM(C.CustomerLastName) as CustomerFullName,
       ROW_NUMBER() OVER(ORDER BY CP.ActionDate) AS RowNumber,
       C.CustomerFirstName,
       C.CustomerLastName,
       C.CustomerCompany,
       C.CustomerPosition,
       C.CustomerCountry,
       C.CustomerProvince,
       C.CustomerContact,
       CP.ActionDate,
       CP.ProductCode,
       CP.CustomerEmail
FROM   tblCustomers C
       JOIN tblCustomerProducts CP
            ON  C.CustomerEmail = CP.CustomerEmail


     ORDER BY ActionDate DESC
WHERE CP.ActionDate BETWEEN '1/17/2013' AND '19/12/2012'
4

4 に答える 4

8

それ以外の

WHERE CP.ActionDate BETWEEN '1/17/2013' AND '19/12/2012`

これを試して:

WHERE CP.ActionDate BETWEEN '19/12/2012' AND '1/17/2013'

注:これはBETWEEN、SQL Serverの述語が非対称value1 BETWEEN value2 AND value3であるためです。これは、と同じであることを意味します。したがって、前のValue1 >= Value2 AND Value1 <= Value3値は。以下である必要があります。value2ANDvalue3

于 2013-01-17T11:37:19.233 に答える
4

小さい方の日付を最初にリストする必要があります

BETWEEN '12/19/2012'  AND '1/17/2013'
于 2013-01-17T11:37:08.313 に答える
3

現在のクエリにはいくつかの問題があります。

まず、日付の順序が間違っています。

第二に、あなたはORDER BY間違った場所にいます。これORDER BYは、選択したものにリストされている最後のアイテムです。

FROM tblCustomers C
JOIN tblCustomerProducts CP 
   ON C.CustomerEmail = CP.CustomerEmail
WHERE CP.ActionDate BETWEEN  '12/19/2012' AND '1/17/2013'
ORDER BY ActionDate DESC

次のものも使用できます。

FROM tblCustomers C
JOIN tblCustomerProducts CP 
   ON C.CustomerEmail = CP.CustomerEmail
WHERE CP.ActionDate >= '12/19/2012' AND CP.ActionDate <= '1/17/2013'
ORDER BY ActionDate DESC

また、日付が同じ方法でフォーマットされていることを確認することをお勧めします。あなたは1つともう1つを持っていDD/MM/YYYYますMM/DD/YYYY

于 2013-01-17T11:38:09.857 に答える
2

日付を置き忘れました。最初は小さく、2番目は大きくする必要があります。

WHERE CP.ActionDate BETWEEN '19/12/2012' AND '1/17/2013'

また

WHERE CP.ActionDate >= '19/12/2012' AND CP.ActionDate <= '1/17/2013'
于 2013-01-17T11:38:16.610 に答える