Sql 如何将两个表连接在一起,并从两个表中解压到一列中?

Sql 如何将两个表连接在一起,并从两个表中解压到一列中?,sql,join,unpivot,Sql,Join,Unpivot,这里我有两个问题: SELECT bk, search, ckey, dn FROM (SELECT t1_bk_no AS 'bk', t1_full_key AS 'ckey', CAST(t1_info1 AS VARCHAR(100)) AS [1], CAST(t1_info2 AS VARCHAR(100)) AS [2], CAST(t1_info3 AS VARCHAR(100)) AS [3],

这里我有两个问题:

SELECT bk, search, ckey, dn
FROM 
   (SELECT t1_bk_no AS 'bk', 
         t1_full_key AS 'ckey', 
         CAST(t1_info1 AS VARCHAR(100)) AS [1],
         CAST(t1_info2 AS VARCHAR(100)) AS [2],
         CAST(t1_info3 AS VARCHAR(100)) AS [3],
         CAST(t1_info4 AS VARCHAR(100)) AS [4],
         CAST(t1_info5 AS VARCHAR(100)) AS [5]
   FROM dbo.FirstTable) PNT
   UNPIVOT( searcg FOR dn IN ( [1],[2],[3],[4],[5] ) ) AS UPV
WHERE search NOT IN ( '0', '999999999', '') AND search IS NOT NULL

基本上我想加入这两个表。正在努力找到join语句的放置位置


感谢您的帮助。

在没有看到所需结果的情况下,您似乎可以使用UNION ALL查询,因为列看起来是相同的:

SELECT bk, search, ckey, dn
FROM 
(
  SELECT t1_bk_no AS 'bk', 
         t1_full_key AS 'ckey', 
         CAST(t1_info1 AS VARCHAR(100)) AS [1],
         CAST(t1_info2 AS VARCHAR(100)) AS [2],
         CAST(t1_info3 AS VARCHAR(100)) AS [3],
         CAST(t1_info4 AS VARCHAR(100)) AS [4],
         CAST(t1_info5 AS VARCHAR(100)) AS [5]
   FROM dbo.FirstTable
) PNT
UNPIVOT( search FOR dn IN ( [1],[2],[3],[4],[5] ) ) AS UPV
WHERE search NOT IN ( '0', '999999999', '') AND search IS NOT NULL
UNION ALL
SELECT bk, search, ckey, dn
FROM 
(
   SELECT t2_bk_no AS 'bk', 
         t2_full_key AS 'ckey', 
         CAST(t2_info1 AS VARCHAR(100)) AS [6],
         CAST(t2_info2 AS VARCHAR(100)) AS [7],
         CAST(t2_info3 AS VARCHAR(100)) AS [8]
   FROM dbo.SecondTable
) PNT
UNPIVOT( search FOR dnIN ( [1],[5],[7] ) ) AS UPV
WHERE search NOT IN ( '0', '999999999', '') AND search IS NOT NULL;

你期望的输出是什么?仅仅是两个查询的结果的组合?如果是这样,您希望合并它们,否则,请给出一个输出示例。是的,谢谢您的帮助。这很有效,谢谢您的帮助。基本上,我在这里学到的是,只要两个表中的列之间存在匹配,JOIN语句就会选择两个表中的所有行;而UNION用于组合两个或多个SELECT语句的结果集。
SELECT bk, search, ckey, dn
FROM 
(
  SELECT t1_bk_no AS 'bk', 
         t1_full_key AS 'ckey', 
         CAST(t1_info1 AS VARCHAR(100)) AS [1],
         CAST(t1_info2 AS VARCHAR(100)) AS [2],
         CAST(t1_info3 AS VARCHAR(100)) AS [3],
         CAST(t1_info4 AS VARCHAR(100)) AS [4],
         CAST(t1_info5 AS VARCHAR(100)) AS [5]
   FROM dbo.FirstTable
) PNT
UNPIVOT( search FOR dn IN ( [1],[2],[3],[4],[5] ) ) AS UPV
WHERE search NOT IN ( '0', '999999999', '') AND search IS NOT NULL
UNION ALL
SELECT bk, search, ckey, dn
FROM 
(
   SELECT t2_bk_no AS 'bk', 
         t2_full_key AS 'ckey', 
         CAST(t2_info1 AS VARCHAR(100)) AS [6],
         CAST(t2_info2 AS VARCHAR(100)) AS [7],
         CAST(t2_info3 AS VARCHAR(100)) AS [8]
   FROM dbo.SecondTable
) PNT
UNPIVOT( search FOR dnIN ( [1],[5],[7] ) ) AS UPV
WHERE search NOT IN ( '0', '999999999', '') AND search IS NOT NULL;