SQL-使所有行都显示一个列值(如果其中一行有)

SQL-使所有行都显示一个列值(如果其中一行有),sql,foxpro,Sql,Foxpro,我有一个用于PICK sheet的SQL语句,它返回订单的标题/细节记录。 SQL中的一个字段基本上是一个表示是否存在危险品的字段。如果订单上的单个产品有代码,则报告应显示其危险性 我遇到的问题是,在SQL结果中,因为我将代码放在报告的标题部分(而不是细节部分),所以它只在第一行查找代码 有没有办法通过SQL基本上说“如果这些行中有一行有此代码,那么让所有这些行都有此代码”?我猜在这里再选一次也行。。。问题是,我使用的是一个基于FoxPro的遗留系统,foxprosql非常糟糕 编辑:刚刚选中,

我有一个用于PICK sheet的SQL语句,它返回订单的标题/细节记录。 SQL中的一个字段基本上是一个表示是否存在危险品的字段。如果订单上的单个产品有代码,则报告应显示其危险性

我遇到的问题是,在SQL结果中,因为我将代码放在报告的标题部分(而不是细节部分),所以它只在第一行查找代码

有没有办法通过SQL基本上说“如果这些行中有一行有此代码,那么让所有这些行都有此代码”?我猜在这里再选一次也行。。。问题是,我使用的是一个基于FoxPro的遗留系统,foxprosql非常糟糕

编辑:刚刚选中,我正在运行VFP8,SELECT语句中的子查询添加到FVP9中:(

如果
Danger.DangerousItems
>0,则某些内容是危险的。如果为空,则没有任何内容是危险的

如果不能执行嵌套查询,则应该能够为嵌套选择创建类似视图的对象(在VFP8中称为a):

SELECT HeaderId, COUNT(*) AS DangerousItems FROM Detail WHERE Dangerous = 1 GROUP BY HeaderId

然后你能留下join吗?

在VFP 8和更早版本中,最好是连续使用三个查询:

选择Header.HeaderId、Header.HeaderDescription、, Detail.DetailId,Detail.DetailDescription,Detail.detaily, 危险品 从页眉 Header.HeaderId上的内部联接详图=Detail.HeaderId 进入光标csrDetail

选择HeaderId,将(*)计为危险项 从细节 哪里危险 按标题分组 进入csrDanger

选择CSRDeail.*,csrDanger.DangerousItems 从csrDetail.HeaderID=csrDanger.HeaderID
进入光标csrResult

如果我正确读取了您的问题,标题包含危险品字段,如果标题包含危险品的有效值,则所有详细信息记录都需要包含该字段。如果是这种情况,您是否尝试过
交叉连接
?您好。否,详细信息记录包含危险品s代码。如果一个字段有一个危险品代码,我需要所有字段都有该代码,以便报表设计器选择该字段(如在报表中,该字段位于标题上,标题查看返回的SQL的最后一行)。我几乎需要使用聚合(如MAX)在“危险品”列上…VFP8不支持派生表-FROM子句中的子查询:(好的,但是按照建议,在嵌套的select上创建一个查询并在该查询上进行连接如何?我必须对此进行研究。我实际上没有权限向数据库添加视图-好吧,这就是您的建议,不是吗?创建一个视图(我来自甲骨文)把它当作一个表连接起来?是的,这就是想法。另一个尝试是创建一个函数,运行嵌套查询并返回是否有危险,然后用它来填充报告。函数的想法听起来不错。虽然我不知道从哪里开始用FoxPro创建函数。再一次,我是一个Oracle man和FoxPro完全不同!不幸的是,这也行不通。该软件基本上为您构建查询。因为它有一个文本框,用于SELECT、FROM、WHERE、GROUPBY、HAVING、INTO和ORDERBY子句。它从中构建SQL,所以我不知道如何才能放入多个查询。
SELECT HeaderId, COUNT(*) AS DangerousItems FROM Detail WHERE Dangerous = 1 GROUP BY HeaderId