Sql server 当子查询遵循=、!=、
我知道这类问题是重复的,但我没有找到这个问题的准确答案。这就是我为什么要贴它的原因 所以,我的问题是,当我在SQLServer中运行sql查询时,它会显示标题错误。我找到了很多东西,但都没用 我的问题是Sql server 当子查询遵循=、!=、,sql-server,Sql Server,我知道这类问题是重复的,但我没有找到这个问题的准确答案。这就是我为什么要贴它的原因 所以,我的问题是,当我在SQLServer中运行sql查询时,它会显示标题错误。我找到了很多东西,但都没用 我的问题是 select trandate, shortdescr, ref as BillNo, f.companyname, h.brnchname, tranno, AccName, sum(dramount) as NetAmount, sum(SGST) GstA
select
trandate, shortdescr, ref as BillNo,
f.companyname, h.brnchname,
tranno, AccName,
sum(dramount) as NetAmount, sum(SGST) GstAmt,
sum(CGST) CstAmt, sum(IGST) IGstAmt, s.SeriesName
from
(select
trandate, shortdescr, ref, dramount, CompanyID,
brnchid, accountid, refaccountid, tranno, seriesid,
case
when accountid = (select top 1 gcsysdescription
from systemparameters
where gcsysvar = 'SGST')
then dramount - cramount
else 0
end as SGST,
case
when accountid = (select top 1 gcsysdescription
from systemparameters
where gcsysvar = 'CGST' )
then dramount - cramount
else 0
end as CGST,
case
when accountid = (select top 1 gcsysdescription
from systemparameters
where gcsysvar = 'IGST' )
then dramount - cramount
else 0
end as IGST,
case
when srno = 1 --=(select top 1 gcsysdescription from systemparameters where gcsysvar='IGST' )
then (select accmas.accountname
from accountdet accdet
left outer join accountmaster accmas on accmas.accountid = accdet.accountid
where accdet.srno = 1 and accdet.seriesid = 19)
end as AccName
from
accountdet) as abc
left outer join
companymaster F on abc.CompanyID = F.companyid
left outer join
brnchmst H on abc.brnchid = H.brnchid
left outer join
Accountmaster a on abc.accountid=a.accountid
left outer join
SeriesMaster s on abc.SeriesID=s.SeriesID
where
abc.companyid = 37
and abc.brnchid in (7, 9, 8, 3, 4)
and abc.seriesid = 19
and convert(varchar(10), trandate, 112) >= '20170920'
and convert(varchar(10), trandate, 112) <= '20180331'
and a.EntryType <> 'D'
and abc.dramount <> 0
group by
trandate, shortdescr, ref, f.companyname, h.brnchname, tranno, s.seriesname, AccName
请帮我解决这个问题
谢谢。看来您的子查询
select accmas.accountname from accountdet accdet LEFT OUTER JOIN accountmaster accmas
ON accmas.accountid= accdet.accountid where accdet.srno = 1 and accdet.seriesid = 19
有时返回多行。您应该更改where中的谓词或添加TOP1…ORDER BY。至少有一个子查询返回超过1行。最有可能的是那里没有排名前1的那个。对于所有其他行,您都有top 1,但没有order by,因此您无法确保获得哪一行。where子句中还有不可争论的谓词,因为您正在将所有日期转换为varchar。为什么不将字符串文字转换为日期,这样就可以利用trandate上的索引?什么是表模式?