2011-12-19 57 views
0

我有此表,其中列對應於名稱:如何篩選表列ID爲相應的名稱直接與SQL查詢

即11 =第一,12 =第二,13 =第三..

COLUMNID(string) starttime(string) endtime(string) 

11     20111203123132 20101203143239 
11     20101203143156  20101203143322 
11      ...    ... 
12 
12 
13 
14 
16 
17 
18 
18 

我需要一個查詢給我的名字,而不是ID

COLUMNAME(string) starttime(string) endtime(string) 
FIRST     20111203123132 20101203143239 
FIRST     20101203143156  20101203143322 
FIRST     ...    ... 
FIRST 
FIRST 
SECOND 
SECOND 
THIRD 
... 

SOLUTION:

SELECT USER ID,USERID(CASE )當SUBSTR(USERID,1,4)像'CC0%'那麼'ADMIN' 當SUBSTR(USERID,1,4)像'CC1%'那麼'THEO' SUBSTR(USERID (USERID,1,4)像'CC13%'那麼'DOUG' 當SUBSTR(USERID,1,4)像'C22%'那麼'''''''''''''''' (USERID,1,4)如果'K15%'THEN'SONIA' 當SUBSTR(USERID,1,4)像'k16%'那麼'JEAN' 當SUBSTR(USERID,1,4) LIKE 'P58%' THEN 'FAB' WHEN SUBSTR(USERID,1,4)LIKE '%P9' THEN 'LOG' ELSE 'N/A' END)USERNAME FROM LOG_HISTORY

+8

到目前爲止您嘗試過的是什麼?你有沒有遇到一些你想問的具體問題? – 2011-12-19 15:34:59

+2

借調;然而,作爲一個起點 - 看看SQL「加入」 – 2011-12-19 15:37:13

+0

我可以過濾代碼中的開關和所有的情況下,我討厭。 – 2011-12-19 15:39:32

回答

1

這取決於您要定位的數據庫類型。如果您的目標SQL Server中,我建議探索這樣的事情

SELECT Name = 
    CASE COLUMNID 
     WHEN '11' THEN First 
     WHEN '12' THEN Second 
    END, 
    starttime, endtime 
FROM yourtable 

你可能想看看你的數據庫設計。我不確定你有什麼是最好的,以達到你想要的結果。 starttime和endtime列是字符串而不是日期時間嗎?

編輯:修改查詢以匹配問題更新

+0

非常感謝案例聲明導致我正確的搜索 – 2011-12-19 22:04:52

+0

你應該發佈你使用的解決方案(因爲它聽起來像你沒有使用我的建議,它只是幫助你找到它),以便具有相同問題的其他人可以看到你做了什麼。 – 2011-12-19 22:07:34

+0

我用我的解決方案編輯帖子。在VS2010中測試 – 2011-12-20 12:43:57

0

SQL沒有將數字轉換爲序數的功能。

查詢this查看如何編寫自定義的示例。