连接两个名称不同的列

时间:2019-05-01 10:37:00

标签: sql tsql

我有两个表,连接在一个列上,我想将具有不同名称的列之一连接到同一列中,我已经尝试过

我希望将whstocks.warehousebrnstocks.brachcode串联。

当前结果(没有来自whstocks的900 brachcode)

brachcode | varint | stock
---------------------------
201       |24601121| 2
204       |24601121| 3
197       |24601121| 4

所需结果(将whstocks.warehouse中的900带入分支代码)

brachcode | varint | stock
---------------------------
201       |24601121| 2
204       |24601121| 3
197       |24601121| 4
900       |24601121| 400
SELECT  brnstocks.branchcode , brnstocks.varint , SUM(brnstocks.retail)
FROM dbo.brnstocks
INNER JOIN dbo.whstocks
ON brnstocks.varint = whstocks.varint
GROUP BY brnstocks.branchcode, whstocks.warehouse
        ,brnstocks.varint
        ,brnstocks.retail
        ,whstocks.stock
HAVING (SUM(brnstocks.retail) > 0)

2 个答案:

答案 0 :(得分:1)

尝试一下:

SELECT
    P.branchcode , P.varint , SUM(P.retail)
FROM
(SELECT  
    branchcode , varint , retail
FROM dbo.brnstocks
UNION
SELECT  
    branchcode , varint , retail
FROM dbo.whstocks
) AS P

GROUP BY P.branchcode , P.varint
HAVING (SUM(P.retail) > 0)

假设whstocksbrnstocks具有相同的字段。如果不是,请替换whstocks

中的匹配字段

答案 1 :(得分:0)

由于您已经将两者分组,因此您应该可以使用+运算符将它们串联起来。

SELECT  whstocks.warehouse + brnstocks.branchcode [WarehousePlusBranch], brnstocks.varint , SUM(brnstocks.retail)
FROM dbo.brnstocks
INNER JOIN dbo.whstocks
ON brnstocks.varint = whstocks.varint
GROUP BY brnstocks.branchcode
        ,whstocks.warehouse
        ,brnstocks.varint
        ,brnstocks.retail
        ,whstocks.stock
HAVING (SUM(brnstocks.retail) > 0)
相关问题