【发布时间】:2019-06-22 03:46:41
【问题描述】:
我有一个很大的原始数据表。它很长,我正在尝试对其进行转置。我正在加入其中的两个选择语句。因此,我得到多个具有相同名称的列。这是一个完整的外部连接,我希望将两个同名的单独列作为一列。由于它是一个外连接,我不想只为它选择一个表列,比如 select t1.c1
谢谢!
SELECT *
FROM (SELECT * FROM [LabData].[dbo].[FermHourlyDCSData] where Attribute='Urea') P
full outer JOIN
(SELECT * FROM [LabData].[dbo].[FermHourlyDCSData] where Attribute='Water to Mash Total Water') FPD ON
P.[TimeStamp] = FPD.[TimeStamp]
and P.Site = FPD.Site
and P.Element = FPD.Element
实际:
Site Attribute Timestamp Value Site Attribute Timestamp Value
AD Urea 1/1/2019 127 Null Null Null Null
Null Null Null Null AD Water 1/1/2019 7.5
预期/期望:
Site Attribute Timestamp Value Value
AD Urea 1/1/2019 127 Null
AD Water 1/1/2019 Null 7.5
【问题讨论】:
-
那么像 Select isnull(t1.c1,t2.c1) 这样的东西?想知道这是否有效?我试试看。
-
表之间的 UNION ALL 会比连接表解决问题吗?
-
union all 的问题是我还想为每个为 value 列选择的列创建一个新列。即使我使用不同的名称为每个选择中的列起别名,它也不起作用。只有当每个表中的所有列都具有相同的名称时,我才会精简 union 和 union all。
标签: sql sql-server