【发布时间】:2014-01-14 03:14:40
【问题描述】:
我需要将 sql 查询结果与另外两条记录结合起来。我需要很少的列值,但其余的可以为 NULL。 表格中的列超过二十五个。现在我可以像这样手动添加了。
--For e.g. Consider this query
SELECT (....)
UNION
SELECT '2',NULL,'418G',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'0','0',NULL,NULL
UNION
SELECT '3',NULL,'710h',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'0','0',NULL,NULL
如果我只加入具有如下值的所需列,则会出现错误。
UNION
SELECT '2' as Category,'418G' as Col3,'0' as Col9,'0' as Col12
UNION
SELECT '3' as Category,'701G' as Col3,'0' as Col9, '0' as Col12
Error:
Msg 205, Level 16, State 1, Line 1
All queries combined using a UNION, INTERSECT or EXCEPT operator must have an
equal number of expressions in their target lists.
我的问题是,
有没有办法通过任何简单的方式添加这些 NULL 值,而不是用这些 NULL 值编写整个查询。正如您所注意到的,我需要最后一列、第三列、第三列和第四列的值。这可能因报告而异。列顺序也可以不同,但可以肯定的是我需要一些随机的 NULL 值,我不关心任何值。
第一部分的主要 SELECT 查询是 INNER JOIN 的 2 个表的结果,然后我想用 NULL 添加这些值。
任何想法都会受到赞赏。
谢谢
【问题讨论】:
-
这应该重新标记为 SQL 问题,因为它与 SSRS 没有任何关系。
-
不,这是不可能的。好问题。
-
用户,感谢您的回复。我知道 UNION 中的每个 SELECT 语句必须具有相同数量的列。这些列还必须具有相似的数据类型。此外,每个 SELECT 语句中的列必须具有相同的顺序,但是对于这种情况,应该有一些魔法可以忽略这些值,直到我们找到要添加的非空值。让我们看看任何最佳答案。
标签: sql sql-server-2005 null union