【发布时间】:2014-08-15 09:25:18
【问题描述】:
SQL 引擎:MSSQL
目标:合并两个不同的和
这是我的查询:
SELECT z.zlec_id AS zlec,
(
CASE WHEN Sum(netto_blind_discout * p.count) IS NOT NULL
THEN
Sum( netto_blind_discout * p.count)
ELSE
0
END
+
CASE WHEN Sum(netto2 * d.count) IS NOT NULL
THEN
Sum(netto2 * d.count)
ELSE
0
END
) AS res,
Sum(netto_blind_discout * p.count),
Sum(netto2 * d.count)
FROM zetter z
FULL OUTER JOIN
(
SELECT netto_blind_discout,
count,
zlec_id
FROM position
) AS p
ON z.zlec_id = p.zlec_id
FULL OUTER JOIN
(
SELECT netto2,
count,
zlec_id
FROM d_additional
) AS d
ON z.zlec_id = d.zlec_id
WHERE z.zlec_id = 123123
GROUP BY z.zlec_id
如何避免笛卡尔积 beetwen First Join 和 Second? 它为我生成了奇怪的结果:
最终结果是
(SUM of product * number_of_rows in d_additional) + (SUM of d_additional * number_of_rows in product),
(SUM of product * number_of_rows in d_additional),
(SUM of d_additional * number_of_rows in product)
我的错在哪里?
【问题讨论】:
-
我使用了一个随机的 sql 格式化程序来格式化您的查询。它仍然很可怕,但比你发布它时要少......
-
@Sebas,固定语法 sql-a
标签: sql sql-server cartesian-product