Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL基于多个值但只有一个条件选择多行_Sql - Fatal编程技术网

SQL基于多个值但只有一个条件选择多行

SQL基于多个值但只有一个条件选择多行,sql,Sql,这是我在论坛上的第一个问题,但要解决我的问题需要很长时间 说明: 在示例中,如果成本代码“C”在范围内,则列表中还应包括其他行 INVOICE|VEHICLE|JOB_DATE|COSTCODE|TOTAL| 2017001|UNIT001|01012017| A | 100| - OK 2017001|UNIT001|01012017| C | 100| - OK 2017001|UNIT002|01012017| A | 100| - FALSE 2017

这是我在论坛上的第一个问题,但要解决我的问题需要很长时间

说明:

在示例中,如果成本代码“C”在范围内,则列表中还应包括其他行

INVOICE|VEHICLE|JOB_DATE|COSTCODE|TOTAL|
2017001|UNIT001|01012017|   A    |  100| - OK
2017001|UNIT001|01012017|   C    |  100| - OK
2017001|UNIT002|01012017|   A    |  100| - FALSE
2017001|UNIT002|01012017|   B    |  100| - FALSE
2017001|UNIT003|01012017|   A    |  100| - OK
2017001|UNIT003|01012017|   C    |  100| - OK
2017022|UNIT001|22012017|   A    |  100| - OK
2017022|UNIT001|22012017|   C    |  100| - OK
2017022|UNIT004|22012017|   A    |  100| - FALSE
2017022|UNIT004|22012017|   B    |  100| - FALSE

Expected result:
INVOICE|VEHICLE|JOB_DATE|COSTCODE|TOTAL|
2017001|UNIT001|01012017|   A    |  100|
2017001|UNIT001|01012017|   C    |  100|
2017001|UNIT003|01012017|   A    |  100|
2017001|UNIT003|01012017|   C    |  100|
2017022|UNIT001|22012017|   A    |  100|
2017022|UNIT001|22012017|   C    |  100|
唯一值是“发票、车辆、作业日期”之间的组合,如果一行有“发票、车辆、作业日期和成本代码”C“,则应显示所有行“发票、车辆、作业日期””等于包含成本代码“C”的行

我希望这个解释比我以前的解释好一点

表名为:

SELECT INVOICE_KEY_FW,VEHICLE_ID_FW,JOB_DATE_FW,COSTCODE_FW,TOTAL_NETT_FW,
FROM PURCHASE_INVOICE_DETAILS_FW 
WHERE
特定单位的成本分为成本代码,并在特定日期在特定单位上执行(每张发票)。 我们收到批量发票,其中一个单位可以在发票上显示两次(但决不能在同一天)。
如果发票上有成本代码(在本例中为“C”),则预期结果中应包括具有相同工作日期和相同车辆ID的所有发票行。

我没有sql编辑器,但这应该可以工作

select INVOICE_NUMBER, UNITNUMBER, DATE, COST_CODE, COSTS 
from INVOICE_DETAILS
where UNIT_NUMBER in (select distinct UNIT_NUMBER 
                      from INVOICE_DETAILS
                      WHERE COST_CODE = 'C')

我认为有更好的方法,但我应该先试一下。

问题不清楚。@Amit你可以省去问号:-)这里的大多数人想要格式化的文本,而不是图像。(或者,更糟糕的是,链接到图像。)无法理解您正在谈论的场景。请编辑问题并更清楚地询问您的问题。正如一些人提到的,我应该更好地解释(我尝试过),但您提到的代码不起作用。我仍然不明白的是:你说唯一的是“发票、车辆、工作日期”,但在你的表格中它不是唯一的。请提供更连贯的数据,我想我能帮上忙。我所理解的是,你想显示所有的行有一个C。。。是吗?我们有一张发票,上面有很多行,上面写着每项工作的成本。作业是车辆Id和作业日期的组合(根据发票)。在一项工作中,当某种类型的成本入账(“C”)时,我们希望看到所有相关的成本。当有一个作业没有(“C”)时,我们不希望在列表中有这个。