我有一个mysql表之类的
NAME salary amount month 1 month 2 month 3 month 4
john 300 300 300 0 0
maria 400 400 0 0 0
tom 380 380 380 380 0
我想在表格或列表视图中看到结果
name unpaid month salary amount
john month 3 300
john month 4 300
maria month 2 400
maria month 3 400
maria month 4 400
tom month 4 380
我试过这样的代码:
sql1="select name,month1 from table where month1=0 "
sql2="select name,month2 from table where month2=0"
sql3="select name,month3 from table where month3=0"
sql4="select name,month4 from table where month4=0"
Dim Sql = String.Concat(sql1, ";", sql2 ,";",sql2,";",sql4 )
但没用,请帮忙?
3条答案
按热度按时间nlejzf6q1#
尝试联合mysql聚合:
w8rqjzmb2#
如何在列名之前使用空格。
我建议你用
UNION
.但是,这里是sql的最低版本;
但是,这个查询还不够好。如果有人拿了一半的薪水会怎么样。为什么一个人要有多张唱片?不应该有工资金额和未付月份的字符串连接的总和吗?
因为这不是你的问题,我不能在这里发布高级sql。如果你想要的话,请在评论中询问。
请阅读这些函数
SUM()
以及GROUP_CONCAT()
带临时桌AS TABLE
. 我认为你应该用它们来编写好程序。zbq4xfa03#
在您现在的代码中,语法看起来有点不对劲。我不知道这是否是您程序中的确切代码,但是当sql语句格式不正确时,将不会发生任何事情。我已经做了一些修改来说明问题所在。
我看到的问题是,您目前的格式是,您可能希望有两个单独的表的名称和支付。对于单独的表,您可以使用外键并将两个表连接起来,使每个表的名称与当月支付的金额一致。您还可以使用
GROUP BY
通过重组的表,您的调用将像下面的语句一样简单。因为我不知道你们的桌名,所以我给他们做了假的。这应该给你的结果,你正在寻找。如果您有任何问题或需要澄清,请告诉我。