如何将 EBDP 列添加到 UNION ALL 中的其他两个表中?

问题描述 投票:0回答:1

当 EM_Main 和 OP_Main 表不包含 SP_Main 表具有的任何列时,如何将与 SP_Main 中的 EDBP 列类似的列添加到 EM_Main 和 OP_Main 表中。 我需要一列相同数据类型的列,以便 UNION ALL 不会中断。

这是代码:

select 
   ISNULL(CONVERT(money,[COLUMN1]), 0.00) 
         * COALESCE(CONVERT(MONEY,[COLUMN2]),CONVERT(MONEY,[COLUMN3]), 1.00) AS [EBDP],
   ISNULL(CONVERT(money,[COLUMN1]), 0.00) 
         * COALESCE(CONVERT(MONEY,[COLUMN2]),CONVERT(MONEY,[COLUMN3]), 1.00) 
      + [ActivityPrice] as TotalPrice,
   convert(money,[COLUMN4]) as ActivityPrice
from [SP_Main] e

UNION ALL

select 
    [COLUMN WILL NEED TO BE CREATED FOR HERE]
    ISNULL(CONVERT(money,[COLUMN5]), 0.00) AS [TotalPrice],
    ISNULL(CONVERT(money,[COLUMN6]), 0.00) AS [ActivityPrice]

from EM_Main

UNION ALL 

SELECT 
    [COLUMN WILL NEED TO BE CREATED FOR HERE]
    ISNULL(CONVERT(money,[COLUMN5]), 0.00) AS [TotalPrice],
    ISNULL(CONVERT(money,[COLUMN6]), 0.00) AS [ActivityPrice]

FROM OP_Main

我希望这有帮助

sql t-sql union union-all
1个回答
0
投票

我相信如果第二个和第三个选择有

SELECT CAST(NULL AS money) AS [EBDP], ...
将执行您需要的操作(假设最后一列的类型为货币)。

或者,如果您想要特定值,可以使用

SELECT CAST(0 AS money) AS [EBDP]

© www.soinside.com 2019 - 2024. All rights reserved.