2010-08-19 209 views
0

我有一個表中有註釋。它有一堆筆記,根據某人在系統中做什麼自動完成不同的事情。SQL有條件返回歷史記錄

當訂單assined它使一張紙條,上面寫着「訂單被分配到‘名’」 當訂單被重新分配它使一張紙條,上面寫着「秩序被重新分配到‘名’」

當訂單分配的初始它拋出的「訂單被分配到‘名’」語句轉換成筆記。

,任何時候後,訂單分配再次,它拋出訂單被重新分配。

我的問題是,如果順序由它分配給自己相同的人投入到它的系統跳過權重新分配的音符,甚至沒有說訂單被分配到。

現在在我的WHEN條件,我有以下:

WHEN LEFT(n.Text,21) = 'Order was assigned to' 

這基本上只返回在該命令assinged首次名稱。因爲如果有人給自己指定一個訂單,它會跳過這個註釋,我需要一個這樣做的陳述,但如果沒有'訂單被分配給',我需要返回第一個訂單被重新分配到註釋。這些註釋在同一個表中也有一個審計插入時間戳字段。訂單可以多次重新分配,但如果沒有訂單被分配給備註,我只需要第一個訂單。

我該怎麼做?

我知道這是可怕的應用程序設計,但我沒有設計它,我不能改變它。我只需要知道如何編寫SQL。

謝謝!!!

回答

1

你可以把你當前的查詢,並使用相同的代碼和一個稍微不同的where子句添加UNION查詢。 LEFT()將查找重新分配的註釋,並且您將添加NOT EXISTS子句以從第一個查詢中排除具有適當註釋的訂單。

+0

當我添加 哪裏NOT EXISTS(LEFT(n.Text,21)= '訂單被分配到'),它給了我一個語法錯誤? 另外,我會怎麼說,我想'訂單被重新分配'與最短日期只? – user380432 2010-08-20 14:19:16

+0

您需要在存在內部進行查詢。即不存在的地方(從myTable中選擇1,其中id = n .NoteID和LEFT(a.Text,21)='Order已分配給') - 注意使用來自exists查詢之外的別名來加入權限注意(由某個id).. – Fosco 2010-08-20 14:22:31