我有两个桌子-- mem_loan和shares。在mem_loan表中,我有一个名为日期的列,而在共享中,我有一个名为noofshare的列。不,mem_loan的主键是共享表中的外键。我想使用以下查询,但得到一个错误。
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子句中。
请帮帮我
发布于 2012-04-18 05:47:32
正如错误消息所述,您需要按不包含在聚合函数中的列进行分组。
但是,您的示例SQL似乎还存在其他错误。特别是,您已经两次包含了mem_loan
表,但只有一个连接条件,因此将执行交叉连接。这不太可能是你的意思。
发布于 2012-04-18 05:48:06
尝尝这个
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))
发布于 2012-04-18 05:48:27
就像这样:
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))
或者你可以这样做:
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
https://stackoverflow.com/questions/10210733
复制