直接UNION ALL就可以了如果并在一起后,还要可以区分,可以加个辅助字段,如下select 值 as uab,'uab' Type from (select 数据点名称,值 from BDSRealtimeData
where 数据点名称 like '%一采区变电所高压%'
and tag名称 like '%yc%' ) as a where a.数据点名称 like '%开关Uab%' )UNION ALLselect 值 as ia,'ia' from (select 数据点名称,值 from BDSRealtimeData
where 数据点名称 like '%一采区变电所高压%'
and tag名称 like '%yc%' ) as a where a.数据点名称 like '%开关ia%'
where 数据点名称 like '%一采区变电所高压%'
and tag名称 like '%yc%' ) as a where a.数据点名称 like '%开关Uab%' )UNION ALLselect 值 as ia,'ia' from (select 数据点名称,值 from BDSRealtimeData
where 数据点名称 like '%一采区变电所高压%'
and tag名称 like '%yc%' ) as a where a.数据点名称 like '%开关ia%'
SELECT 数据点名称,值,时间
FROM BDSRealtimeData
WHERE 数据点名称 LIKE '%一采区变电所高压%'
AND tag名称 LIKE '%yc%'
)
SELECT T1.值 Uab,T2.值 ia FROM
(SELECT 值,ROW_NUMBER()OVER(ORDER BY 时间)RN FROM CTE WHERE 数据点名称 LIKE '%开关Uab%')T1
FULL JOIN
(SELECT 值,ROW_NUMBER()OVER(ORDER BY 时间)RN FROM CTE WHERE 数据点名称 LIKE '%开关ia%')T2
ON T1.RN=T2.RN
select (case when 数据点名称 like '%开关Uab%' then 值 end ) as uab
,(case when 数据点名称 like '%开关ia%' then 值 end ) as ia
from (
select 数据点名称,值 from BDSRealtimeData
where 数据点名称 like '%一采区变电所高压%'
and tag名称 like '%yc%'
) as a
where a.数据点名称 like '%开关Uab%' or a.数据点名称 like '%开关ia%'
select (case when 数据点名称 like '%开关Uab%' then 值 end ) as uab
,(case when 数据点名称 like '%开关ia%' then 值 end ) as ia
from (
select 数据点名称,值 from BDSRealtimeData
where 数据点名称 like '%一采区变电所高压%'
and tag名称 like '%yc%'
) as a
where a.数据点名称 like '%开关Uab%' or a.数据点名称 like '%开关ia%'大哥 你的结果 同一个数据点的 两个值不在一列·~
uab ia
10291.92 NULL
NULL 4.41
10357.8 NULL
NULL 1.47
0 NULL
NULL 0
SELECT 数据点名称,值,时间
FROM BDSRealtimeData
WHERE 数据点名称 LIKE '%一采区变电所高压%'
AND tag名称 LIKE '%yc%'
)
先把你需要的全部数据过滤出来
(SELECT 值,ROW_NUMBER()OVER(ORDER BY 时间)RN FROM CTE WHERE 数据点名称 LIKE '%开关Uab%')T1
再查出Uab的数据,并排序
FULL JOIN
然后,全连接ia的部分
(SELECT 值,ROW_NUMBER()OVER(ORDER BY 时间)RN FROM CTE WHERE 数据点名称 LIKE '%开关ia%')T2
查出ia的数据,也排序
ON T1.RN=T2.RN
以序号相同,当同一行