我试着构建这个t-sql
SELECT
dp.cod1,
(select codruta from terce where terce.codcli = dp.codcli) as ruta,
(select rutasec from terce where terce.codcli = dp.codcli) as rutasec,
dp.bols,
(select sum(cantidad) from diar where diar.id1diar = dp.id1) as cant,
dp.nors
FROM
diariop as dp
ORDER BY
cod1, ruta, rutasec
此外,我需要在SELECT
中包含一个计算列:cant / 25
感谢您的合作
答案 0 :(得分:2)
您应该在FROM子句中正确加入表,而不是在SELECT子句中使用子查询。这将有助于您的数据库正确地优化您的查询,并且可以更有效地从联接表中选择多个列,就像您使用terce
表一样:
Select
dp.cod1,
terce.codruta as ruta,
terce.rutasec as rutasec,
dp.bols,
diarDT.sumOfCantidad as cant,
diarDT.sumOfCantidad/25 as cant_divided_by_25,
dp.nors
FROM
diariop as dp
LEFT OUTER JOIN terce ON
terce.codcli = dp.codcli
LEFT OUTER JOIN (select id1diar, sum(cantidad) as sumOfCantidad from diar GROUP BY id1diar ) as diarDT
diarDT.id1diar=dp.id1
ORDER BY cod1, ruta, rutasec
我仍在为你的diar
选择创建一个派生表,因为你在那里进行求和,这是一种很好的有效方式。
答案 1 :(得分:-1)
如果我已正确理解您的问题,您可以尝试使用以下SQL
Select
dp.cod1,
(select codruta from terce where terce.codcli = dp.codcli) as ruta,
(select rutasec from terce where terce.codcli = dp.codcli) as rutasec,
dp.bols,
(select sum(cantidad) from diar where diar.id1diar=dp.id1) as cant,
(select sum(cantidad) from diar where diar.id1diar=dp.id1)/25 as cantcalculated,
dp.nors
FROM diariop as dp
ORDER BY cod1, ruta, rutasec