使用自定义虚拟值构建SQL查询

时间:2014-10-24 10:36:08

标签: sql

如果我执行以下查询,那么我在这里获得的记录超过1000条

select 
   ID, name, 'Default value' as "Other" 
from 
   emp_table

输出:

ID  |   Name    |   Other
---------------------------------
1   |   H       |   Default value
2   |   V       |   Default value
3   |   D       |   Default value

但是我在虚拟列上添加了默认值Default Value。默认值应仅反映第一行而不是所有行

预期产出:

ID  |   Name    |   Other
----------------------------------
1   |   H       |   Default value
2   |   V       |   null
3   |   D       |   null

3 个答案:

答案 0 :(得分:1)

如果您使用的是SQL Server,可以使用ROW_NUMBER()向查询添加行号,然后使用CASE语句写入默认值或null:

select 
    ID, 
    NAME, 
    CASE ROW_NUMBER() OVER(ORDER by NAME) 
        WHEN 1 THEN 'Default Value' 
        ELSE NULL 
    END AS [Other] 
from emp_table
ORDER BY NAME

OVER中的排序应与查询的顺序相匹配。

答案 1 :(得分:0)

SELECT ID,
       name,
       CASE
           WHEN ID=1 THEN 'Default value'
           ELSE NULL
       END AS "Other"
FROM emp_table

答案 2 :(得分:0)

select 
   e1.ID, e1.name, 
   case when e1.id = e2.min_id then 'Default value' else NULL end as "Other" 
from 
   emp_table e1, (select min(id) min_id from emp_table) e2