我的SQL查询输出是这样的,我需要将它放在一行中。
iProductM iProductO UnitCostM UnitCostO
7065 NULL 30.67 NULL
NULL 7065 NULL 29.78
必需的输出:
iProductM iProductO UnitCostM UnitCostO
7065 7065 30.67 29.78
我的查询如下:
SELECT
coalesce(iProductM, iProductO) as P,
coalesce(UnitCostM, UnitCostO) as U
FROM
ViewForCostAll
WHERE
iProductO = 7065 OR iProductM = 7065
但我的输出仍然分为两行:
P U
7065 30.67
7065 29.78
任何人都可以帮助我吗?
答案 0 :(得分:1)
SELECT DISTINCT
coalesce(iProductM, iProductO) as iProductM,
coalesce(iProductO, iProductM) as iProductM,
coalesce(UnitCostM, UnitCostO) as UnitCostM,
coalesce(UnitCostO, UnitCostM) as UnitCostO
FROM
ViewForCostAll
WHERE
iProductO = 7065 OR iProductM = 7065
如果另一列为null,则可以使用一列,然后使用DISTICNT删除重复项
答案 1 :(得分:0)
联接是您组合行的方法。连接完成后,您可以比较(内部结果)行中的值,并输出所选结果。此查询仅适用于您询问的2行。如果您的数据有更多行,让我们看看它们并进行适合您实际数据的查询。
SELECT
isNull(V1.iProductM, V2.iProductM) as iProductM,
isNull(V1.iProductO, V2.iProductO) as iProductO,
isNull(V1.UnitCostM, V2.UnitCostM) as UnitCostM,
isNull(V1.UnitCostO, V2.UnitCostO) as UnitCostO
FROM
ViewForCostAll V1
LEFT JOIN
ViewforCostAll V2 on (V2.iProductM is null)
WHERE
V1.iProductO = 7065