可能很容易解决这个问题,但我看不到它。我没有对我的确切查询,但我尽可能地将其分解,并给出了我的最终SELECT语句的非常接近的示例以及我的结果的问题示例。 我正在尝试做什么: 我在查询中抓取了一些不同的文档,这没问题,因为我使用的是:
WHERE d.document IN ('Document 1', 'Document 2', 'Document 3', 'Document 4')
这很好用。它正在将这些文档拖到一个字段中,这正是我所需要的。
问题是我需要有关其中一份文件的具体信息。我需要知道文档4中是否使用了一个问题。如果是,我需要在单独的专栏中列出这些问题的答案。问题是一个表,答案是另一个表。
因此,我将所有其他数据(大多数未提及且与此问题无关)放入临时表中以提高性能。当我使用我的#finaltemp表到达最后的SELECT语句时,我正在尝试添加将为Document 4提供答案的字段。我正在做这样的事情:
SELECT DISTINCT
t.*,
CASE
WHEN t.Question = 'question 17' THEN t.answer
ELSE NULL
END AS "Doc5Ans"
FROM #temp t
所需的结果将包含我所有的基本数据字段,但它还有一个额外的字段,可以回答文档5中的问题。显然,所有其他文档都将收到NULL值在这个领域,这就是我想要的。
问题是:每当我有一个带有匹配的文档5(问题的答案)时,我将得到一个完整的行,其中包含我正在寻找的数据,但我也得到一个带有NULL的重复行价值(而不是答案)。因此,每次有一个带有Document 5答案的行时,会有另一行包含所有相同的信息,除了有问题的字段为NULL。
无论出于何种原因,每当我有匹配时,它会给我一行包含正确的数据和一行包含NULL。它总是被记录两次。我只想要其他没有或不需要的文档的NULL,并且这样可以正常工作,但为什么我为匹配的结果获得了额外的NULL行?
ID Name. DocName Doc5Ans
321421 Person 1 DocOne NULL
342611 Person 2 DocOne NULL
373916 Person 3 DocThree NULL
377625 Person 4 DocFive Answer1
377625 Person 4 DocFive NULL
最后两行是我正在谈论的一个例子。 它不应该为Person 4提供NULL .SQL以某种方式添加我的值,但是当Doc5Answer满足条件时,还会添加一行NULL。 这是怎么回事? 感谢您抽出宝贵时间阅读并提供帮助。