在 T-SQL 中将变量表与单个变量结合起来

Posted

技术标签:

【中文标题】在 T-SQL 中将变量表与单个变量结合起来【英文标题】:Combine a variable table with single variable in T- SQL 【发布时间】:2017-11-21 17:00:09 【问题描述】:

从我的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,是用table做的,我是这样试的,

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

我可以将 id 放入表中。但是,我需要上面相同查询中的所有内容,它为 id 提供 *。既然我有一张 ID 表,我该如何组合这两个表和单个变量在一个查询中返回最短时间?

【问题讨论】:

【参考方案1】:

我认为您的变量分配方法没有任何问题。 但是对于 table 方法,请尝试在 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

【讨论】:

是的,这应该可以。我想我想多了,应该在表格中声明所有内容

以上是关于在 T-SQL 中将变量表与单个变量结合起来的主要内容,如果未能解决你的问题,请参考以下文章

在 Airflow 中将 Jinja 模板变量与 BigQueryOperator 结合使用

将两个表与 type 属性结合起来

SQL ORACLE将两个表与htf(超文本函数)结合起来

Thymeleaf:将文字与变量结合起来

如何将多个 char 变量与结构变量中的空格分隔值结合起来?

在Python中将wav文件与空格结合起来