根据前面字段中的值返回字段不同的行

时间:2011-10-28 13:19:16

标签: sql-server sql-server-2008

我正在尝试构建一个查询,该查询将返回第二列之后任何字段存在差异的所有行,具体取决于前面字段值的动态组合。

场景与此类似:
我打算向某人询问他们想要购买的产品的一系列问题。在确定他们想要购买的产品类型后,我会问另一个问题。根据他们给出的答案,我可能会问另一个问题,但问题可能因第一个答案而异。

以下是一组示例数据:

Item|Question1|Answer1|Question2|Answer2|Question3|Answer3
123|Front Door|Material|Wood|Type of Wood|Oak|Color|Red
456|Front Door|Material|Wood|Type of Wood|Oak|Color|Tan
789|Front Door|Material|Wood|Type of Wood|Oak|NULL|NULL
321|Front Door|Material|Steel|Type of Steel|T304|NULL|NULL
654|Front Door|Material|Steel|NULL|NULL|NULL|NULL
987|Closet Door|Material|Wood|Type of Wood|Oak|Color|Red
741|Closet Door|Material|Wood|Type of Wood|Oak|Color|Tan
852|Closet Door|Material|Steel|Type of Steel|T304|NULL|NULL
963|Closet Door|Material|Steel|Type of Steel|T304|NULL|NULL

我希望返回基于前一个答案的问题顺序存在差异的所有行,因此以下行将返回:

123|Front Door|Material|Wood|Type of Wood|Oak|Color|Red
456|Front Door|Material|Wood|Type of Wood|Oak|Color|Tan
789|Front Door|Material|Wood|Type of Wood|Oak|NULL|NULL

这是因为我忘了问789的“颜色”,或者我不需要为123和456询问“颜色”

321|Front Door|Material|Steel|Type of Steel|T304|NULL|NULL
654|Front Door|Material|Steel|NULL|NULL|NULL|NULL

这是因为我忘了问654的“钢铁类型”,或者我不需要问它是否为321。

我有一个查询来确定问题的顺序是否存在差异,但无法弄清楚如何将其基于上一个问题的答案。

提前致谢!

0 个答案:

没有答案