在T-SQL中将变量表与单个变量组合在一起

时间:2017-11-21 17:00:09

标签: sql tsql sql-server-2016

从我的Claim表中,我得到以下内容,

select min([Time]) minimumtime, terminal_id     
from Claims
where claimflag = 2
group by terminal_id    

输出,

    minimumtime              terminal_id
------------------------------------------
2017-04-21 20:02:00.000          9
2017-04-21 20:01:00.000         10  

现在,我正在尝试将这些值转换为这样的变量,

declare @claimmintime datetime,
        @term_id_val varchar(max)

select @claimmintime = min([Time]), @term_id_val= terminal_id       
from Claims
where claimflag = 2
group by terminal_id    

select  @claimmintime [claims_came_in], @term_id_val [terminal_id_came_in]

我得到以下内容,

    claims_came_in             terminal_id_came_in
-----------------------------------------------------
2017-04-21 20:01:00.000          *

我需要这两个ID,

    claims_came_in             terminal_id_came_in
-----------------------------------------------------
2017-04-21 20:02:00.000             9
2017-04-21 20:01:00.000             10

我看到了post,这是使用表格完成的,我试过这样,

declare @term_id_val table(id int)

insert into  
      @term_id_val
select 
      distinct(terminal_id)

from  
     claims
where 
     claimflag = 2

select * from @term_id_val

输出,

id
-----
9
10

我可以把ids带到桌子上。但是,我需要在上面的同一查询中的所有内容,它为{ID提供*。现在我有一个ID表,如何将表和单个变量组合在一个查询中返回最小时间?

1 个答案:

答案 0 :(得分:1)

我认为您的变量赋值方法没有任何问题。 但对于table方法,请尝试在表变量中再添加一列。

declare @term_id_val table(mintime datetime, id int)

insert into  
      @term_id_val
select min([Time]) minimumtime, terminal_id     
from Claims
where claimflag = 2
group by terminal_id  

select * from @term_id_val