我有一个查询代码,该代码给我结果,但我想对同一行结果求和。我做不到,有什么办法做吗?
xact_start
例如,1828 x 488应该是2,而不是两次。
答案 0 :(得分:0)
我认为您想取消数据透视,然后进行汇总:
SELECT cam, cam1aciklama, en_x, boy_y,
SUM(adet_z) as adet_z, SUM(toplam_m2) as toplamm2
FROM ((SELECT cam_1 as cam, cam1aciklama, en_x, boy_y, adet_z, toplam_m2, Siparis_no, STOKTIPI
FROM siparis_detay
) UNION ALL
(SELECT cam_2, cam1aciklama, en_x, boy_y, adet_z, toplam_m2, Siparis_no, STOKTIPI
FROM siparis_detay
) UNION ALL
(SELECT cam_3, cam1aciklama, en_x, boy_y, adet_z, toplam_m2, Siparis_no, STOKTIPI
FROM siparis_detay
)
) s
WHERE Siparis_no = '901405' AND
STOKTIPI IN ('1', '2') AND
cam <> '' -- this eliminates `NULL` as well
GROUP BY cam, en_x, boy_y, cam1aciklama ;
注意:如果Siparis_no
或STOKTIPI
是数字,则比较值不应使用单引号。
答案 1 :(得分:0)
首先合并,然后求和:
select cam_1 as cam, cam1aciklama as acıklama, en_x, boy_y,
sum(adet_z) as adet_z, sum(toplam_m2) as toplamm2
from
(SELECT cam_1, cam1aciklama, en_x, boy_y, adet_z, toplam_m2
FROM siparis_detay
Where Siparis_no= '901405' and (STOKTIPI='1' or STOKTIPI='2') and cam_1 Is Not NULL And cam_1 <> ''
union all
SELECT cam_2, cam2aciklama, en_x, boy_y, adet_z, toplam_m2
FROM siparis_detay
Where Siparis_no= '901405' and (STOKTIPI='1' or STOKTIPI='2') and cam_2 Is Not NULL And cam_2 <> ''
union all
SELECT cam_3, cam3aciklama, en_x, boy_y, adet_z, toplam_m2
FROM siparis_detay
Where Siparis_no= '901405' and (STOKTIPI='1' or STOKTIPI='2') and cam_3 Is Not NULL And cam_3 <> '') tmp
GROUP BY cam_1, en_x, boy_y, cam1aciklama
order by en_x desc;
可能无需联合和单个查询就可以更轻松地编写此代码,但是我们不了解详细信息,也没有示例数据。
答案 2 :(得分:0)
您可以使用UNION代替UNION ALL。如果使用UNION,最终将只能获得不同的数据。