首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于联接的SQL查询

关于联接的SQL查询
EN

Stack Overflow用户
提问于 2012-04-18 13:45:51
回答 6查看 110关注 0票数 0

我有两个桌子-- mem_loan和shares。在mem_loan表中,我有一个名为日期的列,而在共享中,我有一个名为noofshare的列。不,mem_loan的主键是共享表中的外键。我想使用以下查询,但得到一个错误。

代码语言:javascript
运行
复制
SELECT SUM(noofshares),year(convert(datetime,mem_loan.dos,105)) 
FROM shares s,mem_loan ml 
JOIN mem_loan ON mem_loan.loan_acno = shares.loan_acno 
WHERE year(convert(datetime,dos,105))=year(getdate())

错误是如下所示:

列'mem_loan.DOS‘在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。

请帮帮我

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-04-18 13:47:32

正如错误消息所述,您需要按不包含在聚合函数中的列进行分组。

但是,您的示例SQL似乎还存在其他错误。特别是,您已经两次包含了mem_loan表,但只有一个连接条件,因此将执行交叉连接。这不太可能是你的意思。

票数 4
EN

Stack Overflow用户

发布于 2012-04-18 13:48:06

尝尝这个

代码语言:javascript
运行
复制
SELECT SUM(noofshares),year(convert(datetime,mem_loan.dos,105)) 
FROM shares s,mem_loan ml JOIN mem_loan ON mem_loan.loan_acno=shares.loan_acno 
where year(convert(datetime,dos,105))=year(getdate()) 
group by year(convert(datetime,mem_loan.dos,105)) 
票数 1
EN

Stack Overflow用户

发布于 2012-04-18 13:48:27

就像这样:

代码语言:javascript
运行
复制
SELECT 
  SUM(noofshares),
  year(convert(datetime,mem_loan.dos,105)) 
FROM 
  shares s,mem_loan ml 
  JOIN mem_loan ON mem_loan.loan_acno=shares.loan_acno 
where year(convert(datetime,dos,105))=year(getdate())
GROUP BY year(convert(datetime,mem_loan.dos,105))

或者你可以这样做:

代码语言:javascript
运行
复制
SELECT
    t.noofshares,
    SUM(t.LoanYear)
FROM
    (
        SELECT 
          noofshares,
          year(convert(datetime,mem_loan.dos,105)) as LoanYear
        FROM 
          shares s,mem_loan ml 
          JOIN mem_loan ON mem_loan.loan_acno=shares.loan_acno 

    ) AS t
where 
    t.LoanYear=year(getdate())
GROUP BY
    t.LoanYear
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10210733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档