假設有以下行合併按照順序多行
| Id | MachineName | WorkerName | MachineState |
|----------------------------------------------|
| 1 | Alpha | Young | RUNNING |
| 1 | Beta | | STOPPED |
| 1 | Gamma | Foo | READY |
| 1 | Zeta | Zatta | |
| 2 | Guu | Niim | RUNNING |
| 2 | Yuu | Jaam | STOPPED |
| 2 | Nuu | | READY |
| 2 | Faah | Siim | |
| 3 | Iem | | RUNNING |
| 3 | Nyt | Fish | READY |
| 3 | Qwe | Siim | |
我們要按照下面的優先級合併這些行:
已停止>運行> READY>(null或空)
如果一行有最大優先級的值,那麼應該使用該行的值(僅當它不爲空時)。如果它爲空,則應使用來自任何其他行的值。該行應由ID進行分組
對於上面輸入正確的輸出是:
| Id | MachineName | WorkerName | MachineState |
|----------------------------------------------|
| 1 | Beta | Foo | STOPPED |
| 2 | Yuu | Jaam | STOPPED |
| 3 | Iem | Fish | RUNNING |
這將是一個很好的SQL查詢來做到這一點?我嘗試使用連接,但它沒有解決。
你能告訴什麼是你的查詢? –
如果/當存在多個具有最大'(Id,MachineState)'組合的記錄時,您希望在結果集中包含哪條記錄? – eggyal
@eggyal永遠不會有這樣的情況。 –