2012-09-07 70 views
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('Customer A', '20120516', 0), 
          ('Customer B', '20120516', 0), 
          ('Customer C', '20120516', 0), 

          ('Customer A', '20120517', 1), 
          ('Customer B', '20120517', 0), 
          ('Customer C', '20120517', 0), 

          ('Customer A', '20120520', 1), 
          ('Customer B', '20120520', 0), 
          ('Customer C', '20120520', 1), 

          ('Customer A', '20120521', 0), 
          ('Customer B', '20120521', 0), 
          ('Customer C', '20120521', 1), 

          ('Customer A', '20120526', 1), 
          ('Customer B', '20120526', 1),     
          ('Customer C', '20120526', 0); 

我想要的,採取日期參數如下使輸出查詢

當我通過20120517作爲日期參數的類別時,它應該使客戶A的狀態從0變爲1

 
    Customer A 

當我通過20120520作爲參數的日期在類應該帶來顧客C作爲其狀態從0改變爲1

 
    Customer C 

當我通過20120526如在類應該帶來參數爲日客戶B的狀態從0變爲1

 
    Customer B 

我想要第一次將狀態從0改爲1的特定日期的客戶名稱。

注意:當我通過20120526作爲日期參數的類別時,它不應該將客戶A帶到客戶A,因爲客戶A狀態從17自身從0更改爲1。

+0

的表我會希​​望只包含獨特的客戶,而不是一個數量每個客戶的陳述。而是創建一個單獨的CustomerStates表,其中包含這些數據並通過CustomerID鏈接到Customers。 – GolezTrol

+0

我正在跟蹤此表中的客戶歷史記錄。如果我按照您所述創建了單獨的表格,那麼我如何跟蹤該客戶的狀態 – user1093513

+0

然後將其命名爲CustomerHistory。當前表格顯示它是包含實際客戶的客戶表。 – GolezTrol

回答

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) 
+0

工作像魅力感謝一噸。我希望你不會介意,如果我問你上述要求的適當的表設計。預先感謝 – user1093513

0
select Cust_Name from customers_history where Created_Date='2012-05-17' and 
Cust_Status=1 order by Cust_Name desc limit 1 
+0

你還沒有理解我的問題 – user1093513