1

私は以下のようなテーブルを持っています

      CREATE TABLE Customers_History(Row_Id INT NOT NULL PRIMARY KEY AUTO_INCREMENT、
                             Cust_Name VARCHAR(255)、
                             Created_Date DATE、
                             Cust_Status TINYINT)

表の行は以下のとおりです

INSERT INTO Customers_History(Cust_Name、Created_Date、Cust_Status)
                     VALUES('顧客A'、 '20120516'、0)、
                           ('顧客B'、 '20120516'、0)、
                           ('顧客C'、 '20120516'、0)、

                           (「顧客A」、「20120517」、1)、
                           ('顧客B'、 '20120517'、0)、
                           ('顧客C'、 '20120517'、0)、

                           (「顧客A」、「20120520」、1)、
                           ('顧客B'、 '20120520'、0)、
                           ('顧客C'、 '20120520'、1)、

                           ('顧客A'、 '20120521'、0)、
                           ('顧客B'、 '20120521'、0)、
                           ('顧客C'、 '20120521'、1)、

                           (「顧客A」、「20120526」、1)、
                           (「顧客B」、「20120526」、1)、                
                           ('顧客C'、 '20120526'、0);

日付をパラメータとして出力を以下のようにするクエリが必要です

whereクラスの日付のパラメーターとして20120517を渡すと、ステータスが0から1に変わるときに顧客Aを取得する必要があります。

  顧客A

whereクラスの日付のパラメーターとして20120520を渡すと、ステータスが0から1に変わるときに顧客Cを取得する必要があります。

  顧客C

whereクラスの日付のパラメーターとして20120526を渡すと、ステータスが0から1に変わるときに顧客Bを取得する必要があります。

  顧客B

ステータスが初めて0から1に変更された特定の日付の顧客名が必要です。

注:20120526を日付のパラメーターとしてwhereクラスに渡すと、顧客Aのステータスが17自体で0から1に変更されたため、顧客Aを取得しないようにする必要があります。

4

2 に答える 2

2

どうぞ:

select
  c.Cust_Name
from
  Customers_History c
where
  c.CreatedDate = :YourDate and
  c.Cust_Status = 1 and
  not exists 
    ( select 
        'x' 
      from 
        Customers_History c2
      where 
        c2.Cust_Name = c.CustName and
        c2.Cust_Status = 1 and
        c2.Created_Date < c.Created_Date )
于 2012-09-07T09:58:44.107 に答える
0
select Cust_Name from customers_history where Created_Date='2012-05-17' and 
Cust_Status=1 order by Cust_Name desc limit 1
于 2012-09-07T10:34:21.523 に答える