新微赢技术网

标题: [求助]SQL的语句问题~~~~~~~~~~~~~~~~ [打印本页]

作者: √死胖子    时间: 2010-1-8 01:31
标题: [求助]SQL的语句问题~~~~~~~~~~~~~~~~
有两张表
需求单主表 表一:REQUIRE_BILL
字段名 类型 说明 关键字
ID Float(8) 流水号
FLOWSN Float(8) OA流水号
IT_NO Nvarchar(20) 需求单号 Y
CODE Nvarchar(50) 需求分类代码
APPLY_DEPARTMENT Nvarchar(50) 需求单位
APPLIER Nvarchar(10) 需求提出人
MAJOR_IDEA Nvarchar(50) 需求主旨
APPLY_TIME Datetime 需求提出日期
WISH_FINISH_TIME Datetime 希望上线日期
FINISH_TIME Datetime 实际上线日期
IT_UNDERTAKER Nvarchar(10) 实施承办
HANDLE_METHOD Ntext(16) 处理方法
Problem Ntext(16) 现有问题
REMARK Ntext(16) 未来作法
MENO Nvarchar(150) DELAY说明
BENIFIT money 最终效益
BENTFIT Float(8) 效益工时
BENMFIT Float(8) 效益金额
BENEFIT Float(8) 效益说明
TOTESTTIME Datetime 总预估完成日期
STARTTIME Datetime 开始实施日期
AffirmTime Datetime 用户确认日期
AffirmType char(10) 用户测试结果
AffirmMeno Nvarchar(50) 用户确认说明
RequireDate Datetime 需求分析完成
AnalysDate Datetime 系统分析完成
CodeDate Datetime 开发完成日期
TestDate Datetime 测试完成日期
Phase Nvarchar(20) 目前进行阶段
PhaseNarrate Nvarchar(20) 目前阶段说明

需求单从表 表二:REQUIRE_ESTI

字段名 类型 说明 关键字
ID Float(8) 流水号 Y
IT_NO Nvarchar(20) 需求单号 与REQUIRE_BILL中的IT_NO对应
EVALUATEMEMBER Nvarchar(20) 评估人
EVALUATETYPE Nvarchar(50) 评估面
FEASIBILITY Ntext(16) 可行性分析
REQUIREHOUR Float(8) 需求确认工时
ANALYSEHOUR Float(8) 系统分析工时
CODEHOUR Float(8) 系统开发工时
TESTHOUR Float(8) 系统测试工时
ESTIMATETIME Datetime 预估完成日期
PHASE Nvarchar(20) 目前进行阶段
Estitime Datetime 评估时间

我要查询APPLY_DEPARTMENT,MAJOR_IDEA,IT_UNDERTAKER,TOTESTTIME,RequireDate,AnalysDate,CodeDate,TestDate,FINISH_TIME还有
最重要的一个是REQUIRE_ESTI表中,同一个IT_NO可能有多个评估面,那我要查出Estitime中最大的

怎么写
sql="select APPLY_DEPARTMENT,MAJOR_IDEA,IT_UNDERTAKER,TOTESTTIME,RequireDate,AnalysDate,CodeDate,TestDate,FINISH_TIME,max(EstiTime) as (EstiTime) from songzw.REQUIRE_BILL inner join REQUIRE_ESTI on songzw.REQUIRE_BILL.IT_NO=REQUIRE_ESTI.IT_NO where 1=1"

我这样写可是不对啊
作者: 罗ぷ曼ㄉ帝Ke    时间: 2010-1-8 01:31
搞定啦,贴出来让大家看看 songzw是用户名,不要也可以啦
sql="SELECT songzw.Require_Bill.Apply_Department, songzw.Require_Bill.Major_Idea, songzw.Require_Bill.IT_Undertaker,songzw.Require_Bill.RequireCheckDate,songzw.Require_Bill.DealCheckDate, songzw.Require_Bill.TOTESTTIME, songzw.Require_Bill.RequireDate, songzw.Require_Bill.AnalysDate, songzw.Require_Bill.CodeDate, songzw.Require_Bill.TestDate,songzw.Require_Bill.Finish_Time, ss.ESTItime FROM songzw.Require_Bill INNER JOIN (SELECT IT_NO, MAX(ESTItime) AS ESTItime FROM REQUIRE_ESTI GROUP BY IT_NO) ss ON songzw.Require_Bill.FLOWSN = ss.IT_NO where 1=1"
作者: 红苹果校园    时间: 2010-1-8 01:31
1=1"这个是什么????
他是想合并这两个表 WHERE IT_NO=IT_NO
作者: 太阳神    时间: 2010-1-8 01:31
两个表的关联语句应该放在WHERE后面...怎么你放在前面?你那个是ACCESS生成的吧...
作者: 绿茶    时间: 2010-1-8 01:31
sql="select APPLY_DEPARTMENT,MAJOR_IDEA,IT_UNDERTAKER,TOTESTTIME,RequireDate,AnalysDate,CodeDate,TestDate,FINISH_TIME,max(EstiTime) as (EstiTime) from songzw.REQUIRE_BILL inner join REQUIRE_ESTI on songzw.REQUIRE_BILL.IT_NO=REQUIRE_ESTI.IT_NO where 1=1"这个是什么????





sql="select APPLY_DEPARTMENT,MAJOR_IDEA,IT_UNDERTAKER,TOTESTTIME,RequireDate,AnalysDate,CodeDate,TestDate,FINISH_TIME,max(EstiTime) as (EstiTime)
From REQUIRE_BILL RB,REQUIRE_ESTI RB
Where RB.IT_NO=RE.IT_NO

这样试一下...不过因为你没用创建主/外键...有可能出现笛卡儿积现象....
作者: 专属天使    时间: 2010-1-8 01:31
我是用SQL
作者: £籍の口∮    时间: 2010-1-8 01:31
有没有什么报错信息?还是你搜索出来的结果不对?
where 1=1只是为了搜索出所有数据,因为1=1,换成2=2也一样的.
sql="select APPLY_DEPARTMENT,MAJOR_IDEA,IT_UNDERTAKER,TOTESTTIME,RequireDate,AnalysDate,CodeDate,TestDate,FINISH_TIME,max(EstiTime) as (EstiTime) from songzw.REQUIRE_BILL inner join REQUIRE_ESTI on songzw.REQUIRE_BILL.IT_NO=REQUIRE_ESTI.IT_NO where 1=1"
songzw是什么?

sql ="select APPLY_dEPARTMENT,MAJOR_IDEA,IT_UNDERTAKER,TOTESTTIME,RequireDate,AnalysDate,CodeDate,TestDate,FINISH_TIME from REQUIRE_BILL WHERE IT_NO IN (select IT_NO from REQUIRE_ESTI order by EstiTime desc)"
试试这样行不行?




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2