创建测试环境SQL:
if exists (select * from sysobjects where id = OBJECT_ID('[HT_MainBasic]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [HT_MainBasic]CREATE TABLE [HT_MainBasic] (
[iCode] [int] NOT NULL,
[iName] [char] (200) NULL,
[CreatePersonCode] [char] (10) NULL,
[CreatePersonName] [char] (50) NULL,
[CreateDate] [datetime] NULL,
[DeptCode] [char] (50) NULL,
[CusCode] [char] (50) NULL,
[SupCode] [char] (50) NULL,
[PersonName] [char] (50) NULL,
[HTClass] [char] (50) NULL,
[SFFlag] [char] (10) NULL,
[iMoney] [float] NULL,
[BeginDate] [datetime] NULL,
[EndDate] [datetime] NULL,
[ConfimDate] [datetime] NULL,
[NextDate] [datetime] NULL,
[DutyPerson] [char] (50) NULL,
[ContinueFlag] [int] NULL,
[PerformFlag] [char] (50) NULL,
[Area] [float] NULL,
[Content] [char] (200) NULL,
[CheckFlag] [int] NULL,
[Memo] [char] (100) NULL)ALTER TABLE [HT_MainBasic] WITH NOCHECK ADD CONSTRAINT [PK_HT_MainBasic] PRIMARY KEY NONCLUSTERED ( [iCode] )INSERT [HT_MainBasic] ([iCode],[iName],[CreatePersonCode],[CreatePersonName],[CreateDate],[DeptCode],[CusCode],[HTClass],[SFFlag],[iMoney],[BeginDate],[EndDate],[ConfimDate],[NextDate],[DutyPerson],[ContinueFlag],[PerformFlag],[Area],[CheckFlag]) VALUES ( 1,'合同名称','001','yumanqing','2008-3-16 0:00:00','0601','HuB00017','01','SK',555,'2008-3-16 10:54:33','2008-3-16 10:54:33','2008-3-16 10:54:33','1900-1-1 0:00:00','060101',0,'未执行',0,1)
INSERT [HT_MainBasic] ([iCode],[iName],[CreatePersonCode],[CreatePersonName],[CreateDate],[DeptCode],[CusCode],[HTClass],[SFFlag],[iMoney],[BeginDate],[EndDate],[ConfimDate],[NextDate],[DutyPerson],[ContinueFlag],[PerformFlag],[Area],[Content]) VALUES ( 2,'合同名称','001','yumanqing','2008-3-16 0:00:00','0601','HuB00017','01','SK',34,'2008-3-16 10:57:15','2008-3-16 10:57:15','2008-3-16 10:57:15','2008-3-22 0:00:00','060101',1,'未执行',0,'描述')
INSERT [HT_MainBasic] ([iCode],[iName],[CreatePersonCode],[CreatePersonName],[CreateDate],[DeptCode],[CusCode],[HTClass],[SFFlag],[iMoney],[BeginDate],[EndDate],[ConfimDate],[NextDate],[ContinueFlag],[PerformFlag],[Area],[Content]) VALUES ( 3,'呵呵','001','yumanqing','2008-3-16 0:00:00','0602','HuB00017','01','SK',4545,'2008-3-16 0:00:00','2008-3-16 0:00:00','2008-3-16 11:01:15','1900-1-1 0:00:00',0,'未执行',0,'反对反对反对')
INSERT [HT_MainBasic] ([iCode],[iName],[CreatePersonCode],[CreatePersonName],[CreateDate],[DeptCode],[CusCode],[HTClass],[SFFlag],[iMoney],[BeginDate],[EndDate],[ConfimDate],[NextDate],[ContinueFlag],[PerformFlag],[Area],[Content]) VALUES ( 4,'rerrere','001','yumanqing','2008-3-16 0:00:00','0605','HuB00016','01','SK',56565,'2008-3-16 0:00:00','2008-3-16 0:00:00','2008-3-16 11:05:51','1900-1-1 0:00:00',0,'未执行',0,'ferrererer')
INSERT [HT_MainBasic] ([iCode],[iName],[CreatePersonCode],[CreatePersonName],[CreateDate],[DeptCode],[SupCode],[HTClass],[SFFlag],[iMoney],[BeginDate],[EndDate],[ConfimDate],[NextDate],[DutyPerson],[ContinueFlag],[PerformFlag],[Area]) VALUES ( 5,'测试采购合同','001','yumanqing','2008-3-21 0:00:00','0601','00023','01','FK',100,'2008-3-21 21:16:31','2009-3-21 21:16:31','2008-3-21 21:16:31','2008-3-21 0:00:00','060101',1,'执行中',0)
INSERT [HT_MainBasic] ([iCode],[iName],[CreatePersonCode],[CreatePersonName],[CreateDate],[DeptCode],[SupCode],[HTClass],[SFFlag],[iMoney],[BeginDate],[EndDate],[ConfimDate],[NextDate],[DutyPerson],[ContinueFlag],[PerformFlag],[Area]) VALUES ( 6,'aaaa','001','yumanqing','2008-3-21 0:00:00','0602','00022','01','FK',123,'2008-3-21 21:18:57','2008-3-21 21:18:57','2008-3-21 21:18:57','1900-1-1 0:00:00','010301',0,'执行中',0)
if exists (select * from sysobjects where id = OBJECT_ID('[HT_SettlementPlan]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [HT_SettlementPlan]CREATE TABLE [HT_SettlementPlan] (
[AutoNo] [int] IDENTITY (1, 1) NOT NULL,
[CreateDate] [char] (50) NULL,
[CreatePerson] [char] (50) NULL,
[HTCode] [int] NULL,
[PlanDate] [datetime] NULL,
[JSRate] [int] NULL,
[jsMoney] [float] NULL,
[jsType] [char] (50) NULL,
[jsProperty] [char] (50) NULL,
[Memo] [char] (100) NULL)ALTER TABLE [HT_SettlementPlan] WITH NOCHECK ADD CONSTRAINT [PK_HT_SettlementPlan] PRIMARY KEY NONCLUSTERED ( [AutoNo] )SET IDENTITY_INSERT [HT_SettlementPlan] ONINSERT [HT_SettlementPlan] ([AutoNo],[CreateDate],[CreatePerson],[HTCode],[PlanDate],[JSRate],[jsMoney],[jsType],[Memo]) VALUES ( 2,'0001-1-1 0:00:00','yumanqing',1,'2008-3-18 10:24:17',2,4440,'6566','65656556')
INSERT [HT_SettlementPlan] ([AutoNo],[CreateDate],[CreatePerson],[HTCode],[PlanDate],[JSRate],[jsMoney],[jsType],[Memo]) VALUES ( 4,'0001-1-1 0:00:00','yumanqing',1,'2008-3-14 11:17:47',7,38.85,'type','memo')
INSERT [HT_SettlementPlan] ([AutoNo],[CreateDate],[CreatePerson],[HTCode],[PlanDate],[JSRate],[jsMoney]) VALUES ( 6,'2008-3-21','yumanqing',6,'2008-3-21 21:19:50',10,11.07)
INSERT [HT_SettlementPlan] ([AutoNo],[CreateDate],[CreatePerson],[HTCode],[PlanDate],[JSRate],[jsMoney]) VALUES ( 7,'2008-3-21','yumanqing',6,'2008-3-22 23:16:46',3,3.69)SET IDENTITY_INSERT [HT_SettlementPlan] OFF
if exists (select * from sysobjects where id = OBJECT_ID('[HT_SettlementDetails]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [HT_SettlementDetails]CREATE TABLE [HT_SettlementDetails] (
[AutoNo] [int] IDENTITY (1, 1) NOT NULL,
[CreateDate] [char] (50) NULL,
[CreatePerson] [char] (50) NULL,
[HTCode] [int] NULL,
[jsDate] [datetime] NULL,
[jsMoney] [float] NULL,
[jsType] [char] (50) NULL,
[VouchType] [char] (50) NULL,
[VouchCode] [char] (50) NULL,
[CheckPerson] [char] (10) NULL,
[CheckDate] [datetime] NULL,
[Memo] [char] (100) NULL)ALTER TABLE [HT_SettlementDetails] WITH NOCHECK ADD CONSTRAINT [PK_HT_SettlementDetails] PRIMARY KEY NONCLUSTERED ( [AutoNo] )SET IDENTITY_INSERT [HT_SettlementDetails] ONINSERT [HT_SettlementDetails] ([AutoNo],[CreateDate],[CreatePerson],[HTCode],[jsDate],[jsMoney],[jsType]) VALUES ( 1,'0001-1-1 0:00:00','yumanqing',1,'2008-3-18 17:28:59',5454,'fangshi')
INSERT [HT_SettlementDetails] ([AutoNo],[CreateDate],[CreatePerson],[HTCode],[jsDate],[jsMoney]) VALUES ( 3,'2008-3-21','yumanqing',6,'2008-3-21 21:38:56',5)SET IDENTITY_INSERT [HT_SettlementDetails] OFF这三个表的是标准的主从表关系,HT_MainBasic表的iCode是主键,其他两个表的HTCode是外键=================问题========================
我想要的SQL语句 SELECT ht.SupCode,count(ht.SupCode) as HTCount,
sum(ht.iMoney) as HTMontyCount,sum(HT_SettlementPlan.jsMoney) as PlanMoney,
sum(HT_SettlementDetails.jsMoney) as YFMoney FROM HT_MainBasic ht
LEFT JOIN HT_SettlementPlan ON ht.iCode=HT_SettlementPlan.HTCode
LEFT JOIN HT_SettlementDetails ON ht.iCode=HT_SettlementDetails.HTCode
WHERE ht.SFFlag='FK'
GROUP BY ht.SupCode
可是统计结果是错误的?怎么也找不出原因,请指点....TKS
if exists (select * from sysobjects where id = OBJECT_ID('[HT_MainBasic]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [HT_MainBasic]CREATE TABLE [HT_MainBasic] (
[iCode] [int] NOT NULL,
[iName] [char] (200) NULL,
[CreatePersonCode] [char] (10) NULL,
[CreatePersonName] [char] (50) NULL,
[CreateDate] [datetime] NULL,
[DeptCode] [char] (50) NULL,
[CusCode] [char] (50) NULL,
[SupCode] [char] (50) NULL,
[PersonName] [char] (50) NULL,
[HTClass] [char] (50) NULL,
[SFFlag] [char] (10) NULL,
[iMoney] [float] NULL,
[BeginDate] [datetime] NULL,
[EndDate] [datetime] NULL,
[ConfimDate] [datetime] NULL,
[NextDate] [datetime] NULL,
[DutyPerson] [char] (50) NULL,
[ContinueFlag] [int] NULL,
[PerformFlag] [char] (50) NULL,
[Area] [float] NULL,
[Content] [char] (200) NULL,
[CheckFlag] [int] NULL,
[Memo] [char] (100) NULL)ALTER TABLE [HT_MainBasic] WITH NOCHECK ADD CONSTRAINT [PK_HT_MainBasic] PRIMARY KEY NONCLUSTERED ( [iCode] )INSERT [HT_MainBasic] ([iCode],[iName],[CreatePersonCode],[CreatePersonName],[CreateDate],[DeptCode],[CusCode],[HTClass],[SFFlag],[iMoney],[BeginDate],[EndDate],[ConfimDate],[NextDate],[DutyPerson],[ContinueFlag],[PerformFlag],[Area],[CheckFlag]) VALUES ( 1,'合同名称','001','yumanqing','2008-3-16 0:00:00','0601','HuB00017','01','SK',555,'2008-3-16 10:54:33','2008-3-16 10:54:33','2008-3-16 10:54:33','1900-1-1 0:00:00','060101',0,'未执行',0,1)
INSERT [HT_MainBasic] ([iCode],[iName],[CreatePersonCode],[CreatePersonName],[CreateDate],[DeptCode],[CusCode],[HTClass],[SFFlag],[iMoney],[BeginDate],[EndDate],[ConfimDate],[NextDate],[DutyPerson],[ContinueFlag],[PerformFlag],[Area],[Content]) VALUES ( 2,'合同名称','001','yumanqing','2008-3-16 0:00:00','0601','HuB00017','01','SK',34,'2008-3-16 10:57:15','2008-3-16 10:57:15','2008-3-16 10:57:15','2008-3-22 0:00:00','060101',1,'未执行',0,'描述')
INSERT [HT_MainBasic] ([iCode],[iName],[CreatePersonCode],[CreatePersonName],[CreateDate],[DeptCode],[CusCode],[HTClass],[SFFlag],[iMoney],[BeginDate],[EndDate],[ConfimDate],[NextDate],[ContinueFlag],[PerformFlag],[Area],[Content]) VALUES ( 3,'呵呵','001','yumanqing','2008-3-16 0:00:00','0602','HuB00017','01','SK',4545,'2008-3-16 0:00:00','2008-3-16 0:00:00','2008-3-16 11:01:15','1900-1-1 0:00:00',0,'未执行',0,'反对反对反对')
INSERT [HT_MainBasic] ([iCode],[iName],[CreatePersonCode],[CreatePersonName],[CreateDate],[DeptCode],[CusCode],[HTClass],[SFFlag],[iMoney],[BeginDate],[EndDate],[ConfimDate],[NextDate],[ContinueFlag],[PerformFlag],[Area],[Content]) VALUES ( 4,'rerrere','001','yumanqing','2008-3-16 0:00:00','0605','HuB00016','01','SK',56565,'2008-3-16 0:00:00','2008-3-16 0:00:00','2008-3-16 11:05:51','1900-1-1 0:00:00',0,'未执行',0,'ferrererer')
INSERT [HT_MainBasic] ([iCode],[iName],[CreatePersonCode],[CreatePersonName],[CreateDate],[DeptCode],[SupCode],[HTClass],[SFFlag],[iMoney],[BeginDate],[EndDate],[ConfimDate],[NextDate],[DutyPerson],[ContinueFlag],[PerformFlag],[Area]) VALUES ( 5,'测试采购合同','001','yumanqing','2008-3-21 0:00:00','0601','00023','01','FK',100,'2008-3-21 21:16:31','2009-3-21 21:16:31','2008-3-21 21:16:31','2008-3-21 0:00:00','060101',1,'执行中',0)
INSERT [HT_MainBasic] ([iCode],[iName],[CreatePersonCode],[CreatePersonName],[CreateDate],[DeptCode],[SupCode],[HTClass],[SFFlag],[iMoney],[BeginDate],[EndDate],[ConfimDate],[NextDate],[DutyPerson],[ContinueFlag],[PerformFlag],[Area]) VALUES ( 6,'aaaa','001','yumanqing','2008-3-21 0:00:00','0602','00022','01','FK',123,'2008-3-21 21:18:57','2008-3-21 21:18:57','2008-3-21 21:18:57','1900-1-1 0:00:00','010301',0,'执行中',0)
if exists (select * from sysobjects where id = OBJECT_ID('[HT_SettlementPlan]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [HT_SettlementPlan]CREATE TABLE [HT_SettlementPlan] (
[AutoNo] [int] IDENTITY (1, 1) NOT NULL,
[CreateDate] [char] (50) NULL,
[CreatePerson] [char] (50) NULL,
[HTCode] [int] NULL,
[PlanDate] [datetime] NULL,
[JSRate] [int] NULL,
[jsMoney] [float] NULL,
[jsType] [char] (50) NULL,
[jsProperty] [char] (50) NULL,
[Memo] [char] (100) NULL)ALTER TABLE [HT_SettlementPlan] WITH NOCHECK ADD CONSTRAINT [PK_HT_SettlementPlan] PRIMARY KEY NONCLUSTERED ( [AutoNo] )SET IDENTITY_INSERT [HT_SettlementPlan] ONINSERT [HT_SettlementPlan] ([AutoNo],[CreateDate],[CreatePerson],[HTCode],[PlanDate],[JSRate],[jsMoney],[jsType],[Memo]) VALUES ( 2,'0001-1-1 0:00:00','yumanqing',1,'2008-3-18 10:24:17',2,4440,'6566','65656556')
INSERT [HT_SettlementPlan] ([AutoNo],[CreateDate],[CreatePerson],[HTCode],[PlanDate],[JSRate],[jsMoney],[jsType],[Memo]) VALUES ( 4,'0001-1-1 0:00:00','yumanqing',1,'2008-3-14 11:17:47',7,38.85,'type','memo')
INSERT [HT_SettlementPlan] ([AutoNo],[CreateDate],[CreatePerson],[HTCode],[PlanDate],[JSRate],[jsMoney]) VALUES ( 6,'2008-3-21','yumanqing',6,'2008-3-21 21:19:50',10,11.07)
INSERT [HT_SettlementPlan] ([AutoNo],[CreateDate],[CreatePerson],[HTCode],[PlanDate],[JSRate],[jsMoney]) VALUES ( 7,'2008-3-21','yumanqing',6,'2008-3-22 23:16:46',3,3.69)SET IDENTITY_INSERT [HT_SettlementPlan] OFF
if exists (select * from sysobjects where id = OBJECT_ID('[HT_SettlementDetails]') and OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [HT_SettlementDetails]CREATE TABLE [HT_SettlementDetails] (
[AutoNo] [int] IDENTITY (1, 1) NOT NULL,
[CreateDate] [char] (50) NULL,
[CreatePerson] [char] (50) NULL,
[HTCode] [int] NULL,
[jsDate] [datetime] NULL,
[jsMoney] [float] NULL,
[jsType] [char] (50) NULL,
[VouchType] [char] (50) NULL,
[VouchCode] [char] (50) NULL,
[CheckPerson] [char] (10) NULL,
[CheckDate] [datetime] NULL,
[Memo] [char] (100) NULL)ALTER TABLE [HT_SettlementDetails] WITH NOCHECK ADD CONSTRAINT [PK_HT_SettlementDetails] PRIMARY KEY NONCLUSTERED ( [AutoNo] )SET IDENTITY_INSERT [HT_SettlementDetails] ONINSERT [HT_SettlementDetails] ([AutoNo],[CreateDate],[CreatePerson],[HTCode],[jsDate],[jsMoney],[jsType]) VALUES ( 1,'0001-1-1 0:00:00','yumanqing',1,'2008-3-18 17:28:59',5454,'fangshi')
INSERT [HT_SettlementDetails] ([AutoNo],[CreateDate],[CreatePerson],[HTCode],[jsDate],[jsMoney]) VALUES ( 3,'2008-3-21','yumanqing',6,'2008-3-21 21:38:56',5)SET IDENTITY_INSERT [HT_SettlementDetails] OFF这三个表的是标准的主从表关系,HT_MainBasic表的iCode是主键,其他两个表的HTCode是外键=================问题========================
我想要的SQL语句 SELECT ht.SupCode,count(ht.SupCode) as HTCount,
sum(ht.iMoney) as HTMontyCount,sum(HT_SettlementPlan.jsMoney) as PlanMoney,
sum(HT_SettlementDetails.jsMoney) as YFMoney FROM HT_MainBasic ht
LEFT JOIN HT_SettlementPlan ON ht.iCode=HT_SettlementPlan.HTCode
LEFT JOIN HT_SettlementDetails ON ht.iCode=HT_SettlementDetails.HTCode
WHERE ht.SFFlag='FK'
GROUP BY ht.SupCode
可是统计结果是错误的?怎么也找不出原因,请指点....TKS
解决方案 »
- oracle数据库数据比对问题
- 查询出现字段内的值的次数出现最多并排列,怎样写这个SQL?
- 如何将每月的数量显示到行上显示?
- 去除重复记录
- 高级SQL语句查询
- svchost错误,能判断问题出在哪?
- SQL 将多条记录合成为1条!
- why stop when running sp at package???
- 把*.asa的数据文件导入sql7.0后,asp访问失败。
- windows 2000 ping 不通,无法通过网络访问
- 问几道sql语言的题...
- vb中的SQL语句中如何使用一个自定义函数p1(xp),我这样做"select avg(p1(字段名)) as df from ppy"肯定不对,请指正!
SupCode HTCount HTMontyCount PlanMoney YFMoney
00023 1 100
00022 2 246 14.76 10而正确的结果应该是:
SupCode HTCount HTMontyCount PlanMoney YFMoney
00023 1 100
00022 1 123 14.76 5不知SQL语句的书写那里有问题,会出来那么一个错误的结果
确实不知道你想要得到什么结果
你的语句也没什么太大的问题,改成以下方法试一下,看是不是你想要的结果。 SELECT ht.SupCode,count(distinct ht.SupCode) as HTCount,
sum(isnull(ht.iMoney,0)) as HTMontyCount,sum(isnull(HT_SettlementPlan.jsMoney,0)) as PlanMoney,
sum(isnull(HT_SettlementDetails.jsMoney,0)) as YFMoney FROM HT_MainBasic ht
LEFT JOIN HT_SettlementPlan ON ht.iCode=HT_SettlementPlan.HTCode
LEFT JOIN HT_SettlementDetails ON ht.iCode=HT_SettlementDetails.HTCode
WHERE ht.SFFlag='FK'
GROUP BY ht.SupCode
SupCode HTCount HTMontyCount PlanMoney YFMoney
00023 1 100
00022 1 123 14.76 5 00022 的HTCount怎么是2呢?只有一条记录呀
ht.SupCode,
count(ht.SupCode) as HTCount,
sum(ht.iMoney) as HTMontyCount,
max(b.PlanMoney) as PlanMoney,
max(c.YFMoney) as YFMoney
FROM
HT_MainBasic ht
LEFT JOIN
(select HTCode, sum(jsMoney) as PlanMoney from HT_SettlementPlan group by HTCode) as b
on ht.iCode = b.HTCode
LEFT JOIN
(select HTCode, sum(jsMoney) as YFMoney from HT_SettlementDetails group by HTCode) as c
ON ht.iCode=c.HTCode
WHERE ht.SFFlag='FK'
GROUP BY ht.SupCode--> 结果应该如下:/*
SupCode HTCount HTMontyCount PlanMoney YFMoney
-------- -------- ------------- ---------- ----------------------
00022 1 123 14.76 5
00023 1 100 NULL NULL
*/
主表一条记录
从表多条记录
用left outer join
连接出来结果是1*多条记录要先用从表Group by 成一条数据,再进行连接
ht.SupCode,
count(ht.SupCode) as HTCount,
sum(ht.iMoney) as HTMontyCount,
max(b.PlanMoney) as PlanMoney, --用MAX不对吧
max(c.YFMoney) as YFMoney
FROM
HT_MainBasic ht
LEFT JOIN
(select HTCode, sum(jsMoney) as PlanMoney from HT_SettlementPlan group by HTCode) as b
on ht.iCode = b.HTCode
LEFT JOIN
(select HTCode, sum(jsMoney) as YFMoney from HT_SettlementDetails group by HTCode) as c
ON ht.iCode=c.HTCode
WHERE ht.SFFlag='FK'
GROUP BY ht.SupCode
我已经将结果转换为1对1,用min或max都对,因为只有一条对应数据,
HTCount = count(ht.SupCode),
HTMontyCount = sum(ht.iMoney),
PlanMoney = max(m.PlanMoney),
YFMoney = max(n.YFMoney)
from HT_MainBasic ht
left join (select htcode , PlanMoney = sum(jsMoney) from HT_SettlementPlan group by htcode) m on ht.icode = m.htcode
left join (select htcode , YFMoney = sum(jsMoney) from HT_SettlementDetails group by htcode) n on ht.icode = n.htcode
WHERE ht.SFFlag='FK'
group by ht.SupCode/*
SupCode HTCount HTMontyCount PlanMoney YFMoney
-------------------------------------------------- ----------- ----------------------------------------------------- ----------------------------------------------------- -----------------------------------------------------
00022 1 123.0 14.76 5.0
00023 1 100.0 NULL NULL(所影响的行数为 2 行)
*/