我对我的SQL查询有一点疑问。我从descriçao
表中选择dtinicamp
,cab_doc
,从quantidade
选择id_estab
,lin_doc
,然后我加入信息。但这并没有按照我想要的方式向我显示数据。
我的查询:
SELECT descricao, dt_ini_camp, quantidade, id_estab
FROM cab_doc INNER JOIN lin_doc ON cab_doc.id = lin_doc.id_cab_doc
输出:
xxxxx 12-05-14 1000 01
xxxxx 12-05-14 1222 03
我想要实现的目标:
xxxxx 12-05-12 1000 01
1222 03
这可能吗?
答案 0 :(得分:0)
试试这个
SELECT descricao, dt_ini_camp, quantidade
FROM cab_doc INNER JOIN lin_doc ON cab_doc.id=lin_doc.id_cab_doc
GROUP BY ROLLUP(descricao, dt_ini_camp)
你必须放弃id列或以其他方式带来...
Google“按汇总分组”,如果我错了,请更正语法。
这些可能对您有用:
答案 1 :(得分:0)
您应该在应用程序层中进行此类操作,而不是在数据库中。原因是结果集实际上不是SQL结果集,因为列缺少值。例如,突然之间,结果集的顺序很重要。
你可以这样做。在MySQL中,最简单的方法是使用变量:
SELECT if(@d = descricao and @dt = dt_ini_camp, '', descricao) as descricao,
if(@d = descricao and @dt = dt_ini_camp, '', dt_ini_camp) as dt_ini_camp,
quantidade, id_estab,
@d := descricao, @dt := dt_ini_camp
FROM cab_doc INNER JOIN
lin_doc
ON cab_doc.id = lin_doc.id_cab_doc CROSS JOIN
(select @d := '', @dt := '') const
ORDER BY descricao, dt_ini_camp, quantidade, id_estab;