SQL Server:获取与我的WHERE语句匹配的结果的重复结果
这可能有一个非常简单的解决办法,但我就是看不出来。我手头没有确切的查询,但我尽可能地将其分解,并给出了一个非常接近我的最终SELECT语句示例和一个结果问题示例。 我想做的是: 我在查询中抓取了一些不同的文档,这没有问题,因为我使用的是:SQL Server:获取与我的WHERE语句匹配的结果的重复结果,sql,sql-server,Sql,Sql Server,这可能有一个非常简单的解决办法,但我就是看不出来。我手头没有确切的查询,但我尽可能地将其分解,并给出了一个非常接近我的最终SELECT语句示例和一个结果问题示例。 我想做的是: 我在查询中抓取了一些不同的文档,这没有问题,因为我使用的是: WHERE d.document IN ('Document 1', 'Document 2', 'Document 3', 'Document 4') 这很好用。它把那些文件放到一个字段中,这就是我需要的 问题是我需要关于其中一份文件的具体信息。我需要知道
WHERE d.document IN ('Document 1', 'Document 2', 'Document 3', 'Document 4')
这很好用。它把那些文件放到一个字段中,这就是我需要的
问题是我需要关于其中一份文件的具体信息。我需要知道文件4中是否使用了问题。如果是,我需要在一个单独的专栏中列出这些问题的答案。问题是一张表,答案是另一张表
因此,我将所有其他未提及且与此问题无关的数据放入临时表中,以提高性能。当我使用finaltemp表到达最后一个SELECT语句时,我试图添加一个字段,该字段将为文档4提供答案。我在做这样的事情:
SELECT DISTINCT
t.*,
CASE
WHEN t.Question = 'question 17' THEN t.answer
ELSE NULL
END AS "Doc5Ans"
FROM #temp t
所需的结果将包含我的所有基本数据字段,它确实包含这些字段,但还有一个额外字段将给出文档5中问题的答案。显然,所有其他文档都将在该字段中接收空值,这正是我想要的
问题是:每当我有一个与问题答案匹配的文档5时,我会得到一个包含我要查找的数据的完美行,但我也会得到一个空值的重复行,而不是答案。因此,每当有一行包含文档5的答案时,就会有另一行包含所有相同的信息,除了有问题的字段为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
最后两行就是我所说的例子。
它不应该给我第四个人一个空值。SQL以某种方式添加了我的值,但当Doc5Answer满足条件时,也添加了一行NULL。
这是怎么回事?
感谢您抽出时间阅读并提供帮助 请显示清晰的样本数据、当前输出和预期输出。这个问题在我看来并不清楚。我在帖子中添加了我的样本数据和输出。我想要的结果不是我发布的示例结果表的最后一行。不幸的是,我没有确切的查询,但我发布的这个示例是问题开始的查询部分。请向我们展示每种情况下的t.Question值。假设您在temp中有两个DOC5条目。一个是问题69,另一个是问题17。在本例中,每一行都有一个不同的行:DocFive和DocFive分别回答问题17和null。解决这一问题的一种方法是使用适当的GROUPBY语句和大小写聚合。例如,当问题='Question 17'时,选择ID、名称、DocName、Doc5Ans=MAXCASE,然后按ID、名称、DocName从临时组中结束回答;