如何仅在查询返回行时将列标题包括在结果数据集中?

时间:2019-01-23 04:25:45

标签: sql tsql

仅在查询返回行时才需要将标题添加到存储过程的结果数据集中。

尝试使用联合将列标题添加到结果数据集中,但是我只希望如果查询返回其他行,则列标题存在。

如果没有其他记录,我需要将结果设为零字节文件(无标题)。

将@myValue声明为int = 999

select 
   'Column One'
  ,'Column Two'

union all

select cast([Col1] as varchar)
      ,cast([Col2] as varchar)

FROM [dbo].[myTable]
where [Col1] = @myValue
and  @@RowCount > 0

2 个答案:

答案 0 :(得分:1)

对查询使用公用表表达式,因此不必重复:

with cte(c1, c2) as
(
    select cast([Col1] as varchar) 
          ,cast([Col2] as varchar) 
    from [dbo].[myTable]
    where [Col1] = @myValue
)

select c1, c2
from
(
    select c1, c2, 2 as c3
    from cte
    union all
    select 'Column One' 
          ,'Column Two'
          , 1 
where exists
    (
        select 1 
        from cte
    )
) order by c3

答案 1 :(得分:0)

将相同的FROM子句和TOP 1添加到“虚拟列名称”部分。如果没有记录,它将不返回任何内容;如果有记录,则将返回一行。

android.app.RemoteServiceException: can't deliver broadcast at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1802) at
android.os.Handler.dispatchMessage(Handler.java:102) at
android.os.Looper.loop(Looper.java:154) at
android.app.ActivityThread.main(ActivityThread.java:6682) at
java.lang.reflect.Method.invoke(Native Method) at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)