在SQL中将2个字段合并为1个不同的表

时间:2015-05-05 05:18:30

标签: sql-server

如何将来自不同表格的2个字段合并为1列。我dbo.Desktop_Info字段为desktop_info_id& dbo.Laptops_info字段为laptop_info_id。我希望在我看来将两个字段合并为1,包括数据。现在,我该怎么做?你能告诉我如何做的代码吗?

dbo.Desktop_Info

desktop_info_id  dt_serial_no
------------------------------
1                9PP7D2S
2                9PP7D2S1

dbo.laptop_info

laptop_info_id  lp_serial_no
------------------------------
1                9PP7D2S2
2                9PP7D2S3

预期结果:

vw_id   type        trans_id    Serial_No
-----------------------------------------------
1       Desktop       1          9PP7D2S
2       Desktop       2          9PP7D2S1
3       Laptop        1          9PP7D2S2
4       Laptop        2          9PP7D2S3

2 个答案:

答案 0 :(得分:3)

您希望使用UNION ALL合并数据,ROW_NUMBER分配vw_id

SELECT
    vw_id = ROW_NUMBER() OVER (ORDER BY (SELECT NULL)),
    *
FROM(
    SELECT 
        type = 'Desktop',
        trans_id = desktop_info_id,
        Serial_No = dt_serial_no
    FROM desktop_info
    UNION ALL
    SELECT 
        type = 'Laptop',
        trans_id = laptop_info_id, 
        Seral_No = lp_serial_no
    FROM laptop_info
)AS t

答案 1 :(得分:2)

您可以使用UNION ALL。像这样的东西

SELECT ROW_NUMBER()OVER(ORDER BY type,trans_id) as vw_id,type,trans_id,dt_serial_no 
FROM (
SELECT  'Desktop' as type,desktop_info_id as trans_id,  dt_serial_no as dt_serial_no
FROM dbo.Desktop_Info
UNION ALL 
SELECT 'Laptop' as type,laptop_info_id as trans_id,  lp_serial_no as dt_serial_no
FROM dbo.laptop_info
)T