在 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 结合使用