我有两个表,其中包含以下数据:
[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?
解决方法
@H_301_19@ 你可以这样做:SELECT DataID,HerdID,NaabCode,NULL as BangsNumber FROM [Animals].[Males] UNION ALL SELECT DataID,NULL as NaabCode,BangsNumber FROM [Animals].[Females]
我不记得sql Server支持相应的语法,但我可能错了.无论如何,此查询将为男性的BangsNumber列选择null,为女性选择NaabCode列,同时正确选择其他所有内容.