我一直在尋找一段時間,現在試圖找到一種方法來使用rank()作爲列來用於連接。我查看了一些資源,here,here和here。這些都不符合我想要完成的事情。SQL Server,加入生成的排名()
我得到的是一串id被空格分開的字符串。我需要將這些ID分配給我的Animal表格。我在一個只允許我在sql中執行此操作的平臺內工作,因此使用高級編程語言不是一種選擇。
這裏是一個例子。
我想把我的字符串「345345 345436 678768」解析出來,並填寫我的表像這樣
|Name |ID |
------------------
|Monkey |345345|
|Bird |345436|
|Horse |678768|
我已經寫一個函數,我的字符串,打破它除了和衆多的IT 。所以,當我把我的分裂功能「345345 345436 678768」我得到:
|Num |ID |
-------------
|1 |345345|
|2 |345436|
|3 |678768|
所以現在我想做的事情是這樣的:
select name, (rank() over(order by name)) as rank_num
from dbo.Split(" ", "345345 345436 678768") split, animal
where num = rank_num
卻出現「無效的列名稱rank_num「
不明白。在動物的表?哪裏'num'聯合其他什麼信息我從哪裏來?排名完成了什麼(看起來你想要訂購一些東西,但是什麼?你的期望輸出似乎不是按動物名稱排序的,如果這是什麼列「動物」在你的rank()函數中表示)。你怎麼知道哪個數字屬於哪個動物?你期望的結果是什麼? –
你不能像這樣引用別名到rank_num。 – BlackICE