具有不同列的T-SQL联合

前端之家收集整理的这篇文章主要介绍了具有不同列的T-SQL联合前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个表,其中包含以下数据:
[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'

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

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'`

当我使用UNION关键字时,sql Server生成了一个将NaabCode和BangsNumber合并为一列的视图.我在常规sql上的一本书建议使用UNION CORRESPONDING语法:

SELECT *
FROM [Animals].[Males]
UNION CORRESPONDING (DataID,HerdNumber,HerdID)
SELECT *
FROM [Animals].[Females]`

但是当我输入这个sql Server时,“CORRESPONDING’附近的语法不正确.”

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

解决方法

你可以这样做:
SELECT DataID,HerdID,NaabCode,NULL as BangsNumber
FROM [Animals].[Males]
UNION ALL
SELECT DataID,NULL as NaabCode,BangsNumber
FROM [Animals].[Females]

SQL Fiddle

我不记得sql Server支持相应的语法,但我可能错了.无论如何,此查询将为男性的BangsNumber列选择null,为女性选择NaabCode列,同时正确选择其他所有内容.

猜你在找的MsSQL相关文章