具有不同列的T-SQL联合

Mil*_*n X 6 sql sql-server

我有两个表,其中包含以下数据:

[Animals].[Males]
DataID                               HerdNumber HerdID  NaabCode
e46fff54-a784-46ed-9a7f-4c81e649e6a0 4          'GOLDA' '7JE1067'
fee3e66b-7248-44dd-8670-791a6daa5d49 1          '35'    NULL

[Animals].[Females]
DataID                               HerdNumber HerdID   BangsNumber
987110c6-c938-43a7-a5db-194ce2162a20 1          '9'      'NB3829483909488'
1fc83693-9b8a-4054-9d79-fbd66ee99091 2          'NATTIE' 'ID2314843985499'
Run Code Online (Sandbox Code Playgroud)

我想将这些表合并到一个如下所示的视图中:

DataID                               HerdNumber HerdID   NaabCode  BangsNumber
e46fff54-a784-46ed-9a7f-4c81e649e6a0 4          'GOLDA'  '7JE1067' NULL
fee3e66b-7248-44dd-8670-791a6daa5d49 1          '35'     NULL      NULL
987110c6-c938-43a7-a5db-194ce2162a20 1          '9'      NULL      'NB3829483909488'
1fc83693-9b8a-4054-9d79-fbd66ee99091 2          'NATTIE' NULL      'ID2314843985499'`
Run Code Online (Sandbox Code Playgroud)

当我用UNION关键字,SQL服务器产生的合并了的视图NaabCodeBangsNumber成一列.我在常规SQL上的一本书建议UNION CORRESPONDING语法如下:

SELECT *
FROM [Animals].[Males]
UNION CORRESPONDING (DataID, HerdNumber, HerdID)
SELECT *
FROM [Animals].[Females]`
Run Code Online (Sandbox Code Playgroud)

但是当我输入这个SQL Server时,"CORRESPONDING'附近的语法不正确."

谁能告诉我如何实现我想要的结果和/或如何UNION CORRESPONDING在T-SQL中使用?

SWe*_*eko 8

你可以这样做:

SELECT DataID, HerdNumber, HerdID, NaabCode, NULL as BangsNumber
FROM [Animals].[Males]
UNION ALL
SELECT DataID, HerdNumber, HerdID, NULL as NaabCode, BangsNumber
FROM [Animals].[Females]
Run Code Online (Sandbox Code Playgroud)

SQL小提琴

我不记得SQL Server支持corresponding语法,但我可能错了.
无论如何,这语句将选择nullBangsNumber为雄性列,并为NaabCode针对女性列,而正确选择一切.