如何使用sql查询直接将表列id过滤为相应的名称

时间:2011-12-19 15:33:57

标签: c# 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
...

解决方案:

SELECT ID,USERID,(CASE                      当SUBSTR(USERID,1,4)喜欢'CC0%'然后'管理'                      当SUBSTR(USERID,1,4)喜欢'CC1%'然后'THEO'                      当SUBSTR(USERID,1,4)喜欢'CC12%'那么'PAT'                      当SUBSTR(USERID,1,4)喜欢'CC13%'那么'DOUG'                      当SUBSTR(USERID,1,4)喜欢'C22%'然后'PHIL'                      当SUBSTR(USERID,1,4)喜欢'K15%'那么'SONIA'时                      当SUBSTR(USERID,1,4)喜欢'k16%'然后'牛'                      当SUBSTR(USERID,1,4)喜欢'P58%'那么'FAB'时                      当SUBSTR(USERID,1,4)喜欢'P9%'那么'记录'                      ELSE'N / A'                      END)USERNAME FROM LOG_HISTORY

2 个答案:

答案 0 :(得分:1)

这取决于您要定位的数据库类型。如果您的目标是SQL Server,我建议您尝试使用此类

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

您可能需要查看数据库设计。我不确定你最有效的是达到你想要的结果。有没有理由starttime和endtime列是字符串而不是datetime?

编辑:修改查询以匹配问题更新

答案 1 :(得分:0)

SQL没有将数字转换为序数的函数。

检查this以获取有关如何编写自定义文件的示例。