sql - 即使所有其他人都没有返回数据,也显示第一列
问题描述
我需要显示第一列数据,即使剩余的数据列在结果中没有值。
我尝试了各种功能来达到我的结果,但没有取得任何进展。
SELECT
Distinct dbo.ae_i_inv_e.cycle_code AS Section,
Sum(dbo.ae_i_loc_e.qty) As Quantity_On_Hand,
Sum(dbo.ae_i_inv_w.whse_cost) AS Average_Cost,
SUM (dbo.ae_i_loc_e.qty * dbo.ae_i_inv_w.whse_cost) AS Cost_On_Hand,
Count (dbo.ae_i_inv_e.part) AS Items
FROM
( dbo.ae_i_inv_e
Left Outer JOIN dbo.ae_i_loc_e ON (dbo.ae_i_inv_e.multitenant_id =
dbo.ae_i_loc_e.multitenant_id)
AND (dbo.ae_i_inv_e.part = dbo.ae_i_loc_e.part))
Left Outer JOIN dbo.ae_i_inv_w ON (dbo.ae_i_loc_e.multitenant_id =
dbo.ae_i_inv_w.multitenant_id)
AND (dbo.ae_i_inv_w.multitenant_id = dbo.ae_i_inv_e.multitenant_id)
AND (dbo.ae_i_loc_e.part = dbo.ae_i_inv_w.part)
AND (dbo.ae_i_inv_w.part = dbo.ae_i_inv_e.part)
WHERE dbo.ae_i_inv_e.multitenant_id = '2824' AND
dbo.ae_i_inv_e.active = 'N'
GROUP BY
dbo.ae_i_inv_e.cycle_code
ORDER BY
dbo.ae_i_inv_e.cycle_code
实际结果部分 Quantity_on_hand Average_cost Cost_on_hand 项目
预期成绩
Section Quantity_on_hand Average_cost Cost_on_hand Items
A 0 0 0 0
B 0 0 0 0
C 0 0 0 0
D 0 0 0 0
E 0 0 0 0
解决方案
SELECT
a.Section,
ISNULL(COALESCE(a.Quantity_On_Hand, b.Quantity_On_Hand), 0) as Quantity_On_Hand,
ISNULL(COALESCE(a.cost_on_hand, b.cost_on_hand), 0) as cost_on_hand,
ISNULL(COALESCE(a.items, b.items), 0) as items
FROM (
Select *
FROM (
VALUES
('A', NULL, NULL, NULL),
('B', NULL, NULL, NULL),
('C', NULL, NULL, NULL),
('E', NULL, NULL, NULL),
('G', NULL, NULL, NULL),
('N', NULL, NULL, NULL),
('P', NULL, NULL, NULL),
('S', NULL, NULL, NULL),
('T', NULL, NULL, NULL),
('U', NULL, NULL, NULL),
('V', NULL, NULL, NULL)
) inv(Section, Quantity_On_Hand, cost_on_hand, items)
) AS a
FULL OUTER JOIN (
SELECT
e.cycle_code AS Section,
isnull(Sum (loc.qty),0) As Quantity_On_Hand,
isnull(SUM (loc.qty * w.whse_cost),0) AS Cost_On_Hand,
Count (e.part) AS Items
FROM
ae_i_inv_e e
LEFT OUTER JOIN ae_i_loc_e loc ON
e.multitenant_id = loc.multitenant_id AND
e.part = loc.part
LEFT OUTER JOIN ae_i_inv_w w ON
e.multitenant_id = w.multitenant_id AND
e.part = w.part
WHERE
e.active = 'N' AND
e.multitenant_id = '2824'
GROUP BY
e.cycle_code)
AS b ON a.section = b.Section
Order By
a.section
这解决了我遇到的问题。
推荐阅读
- python - python networkx有向图效率与数百万个字符串
- jenkins-pipeline - 如何获取有关 Jenkinsfile (Pipeline) 中所有并发构建作业的信息
- sql - 选择多行具有不同列的条件
- java - 启用 JMXRemote 监控
- python - 将csv中某些列的所有值读入一个数组python
- angular - 使用 RxJs switchMap 订阅的 Angular typeahead
- sql - 更新统计维护计划尝试更新数据库中不存在的表统计信息
- reactjs - Apollo GraphQL 请求被取消
- sonarqube - 我已经为 Sonarqube 安装了法语语言包,但我不知道如何更改默认语言
- javascript - 如何使用几个 next.js 插件(打字稿和手写笔)