【发布时间】:2019-08-05 02:38:52
【问题描述】:
我正在处理一个查询,当LocationId 列不为空时,我需要计算不同的CarId 行,如果它的null 或0 不为空,则获取所有CarId,但我尝试过的查询区分所有 CarId,即使它为 null
@LocId int
Select Count(distinct a.CarId) from VehicleDetails a
inner join VehicleDocuments b on a.DocId=b.DocId
left join VehicleShipmentDetails dpg on dpg.VehicleShipmentId= b.VehicleShipmentId
where b.LogicalDelete=0 and a.LogicalDelete=0
and (dpg.LocationId= @LocId or dpg.LocationId= 0 or dpg.LocationId is null)
| ID | CarId | LocationId | DateCreated |
|------+----------------+-----------------+---------------|
| 1 | 1 | 5 | 02/03/2019 |
| 2 | 2 | null | 01/14/2019 |
| 3 | 2 | 0 | 02/03/2019 |
| 4 | 2 | 5 | 12/30/2018 |
| 5 | 4 | 3 | 01/10/2019 |
| 6 | 3 | 5 | 02/14/2019 |
| 7 | 2 | 5 | 03/13/2019 |
期望的输出:
| ID | CarId | LocationId | DateCreated |
+------+----------------+-----------------+---------------+
| 1 | 1 | 5 | 02/03/2019 |
| 2 | 2 | null | 01/14/2019 |
| 3 | 2 | 0 | 02/03/2019 |
| 4 | 2 | 5 | 03/13/2019 |
| 5 | 4 | 3 | 01/10/2019 |
| 6 | 3 | 5 | 02/14/2019 |
电流输出
| ID | CarId | LocationId | DateCreated |
+------+----------------+-----------------+---------------+
| 1 | 1 | 5 | 02/03/2019 |
| 2 | 2 | 5 | 01/14/2019 |
| 3 | 4 | 3 | 01/10/2019 |
| 4 | 3 | 5 | 02/14/2019 |
我得到了4 的计数,但我需要将6 作为计数
编辑:如果LocationId 的值为Null 或0,我的目标是将行删除到Distinct CarId,但在我的当前代码中,它区分所有为null,@ 的CarId 987654337@ 等于@LocId
【问题讨论】:
-
您的查询返回一列,但您的结果有四列...
-
当前输出是我得到@jarlh的计数和值
-
显示匹配的查询和结果数据!!!
-
@jarlh 我的目标是如果 LocationId 的值为 Null 或 0 但在我的当前代码中将行删除到 Distinct ID 但在我的当前代码中,它区分所有为 null、0 且等于 LocId 的 CarId
标签: mysql sql database select distinct