我有这个表,其中列对应于名称:
即。 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
答案 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以获取有关如何编写自定义文件的示例。