有没有这样一条SQL语句???(题目字多,但不复杂,各位救命~~~~)分不够好商量!

hefeigunfire 2003-08-23 10:57:00
7个变量:Po、Ps、Pc、Qo、Qs、Qc、Sr(分别以1,2,3...7代替),1-3为输入变量,4-7为输出变量。数据如下(均为试验所得数据):
Po Ps Pc Qo Qs Qc Sr
(m) (m) (m) (m^3/h)(m^3/h)(m^3/h)
80.8 11.4 39.6 42.6 16.5 59.0 .494
80.6 11.5 48.7 42.8 .6 43.5 .494
80.3 11.3 45.4 42.6 4.5 46.7 .494
80.3 10.9 42.9 42.7 7.8 50.0 .494
...........
82.5 11.4 39.8 41.8 16.9 58.9 .468
82.5 11.4 39.8 41.8 16.9 58.9 .468
82.7 11.0 48.5 42.1 .8 43.0 .468

...............(省略N多数据)
假设现有实际TSr=0.48,找出要找出(TSr-Sr)的最小值对应的Sr,并在找到的结果集中(比如结果集返回12条记录)找到符合条件min[(Po-实际Po)+(Ps-实际Ps)+(Pc-实际Pc)+(Qc-实际Qc)]的那一条记录,并把得到的那一行7个变量值赋予程序中的变量。
m_pRecordset->Open("SELECT * FROM TestDataTable", theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic, adCmdText);
中的"SELECT * FROM TestDataTable"该如何写?如何把值返回给变量?
...全文
25 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
happydreamer 2003-08-24
  • 打赏
  • 举报
回复
select * from youttable
where TSr-Sr=(select min(TSr-Sr) from yourtalbe)
and (Po-实际Po)+(Ps-实际Ps)+(Pc-实际Pc)+(Qc-实际Qc)
=(select min((Po-实际Po)+(Ps-实际Ps)+(Pc-实际Pc)+(Qc-实际Qc)) from yourtable)
littlepaopao 2003-08-24
  • 打赏
  • 举报
回复
我建议还是用老办法,把数据集返回到一个矩阵里面,再进行min的操作
_variant_t var;
//CString Po,Ps,Pc,Qo,Qs,Qc,Sr,eta;
Mm mFindResult;
mFindResult=zeros(17,7);
// 清空列表框
//m_listSr.ResetContent();
//Po=Ps=Pc=Qo=Qs=Qc=Sr=eta="";

// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些想不到的错误。jingzhou xu
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
AfxMessageBox("表内数据为空");
//return;
}

// 读入库中各字段并加入列表框中
int i=1;
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("Po");
if(var.vt != VT_NULL)
{
var.ChangeType(VT_BSTR);
mFindResult.r(i,1) = var.dblVal;
}
var = m_pRecordset->GetCollect("Ps");
if(var.vt != VT_NULL)
{
var.ChangeType(VT_BSTR);
mFindResult.r(i,2) = var.dblVal;
}
var = m_pRecordset->GetCollect("Pc");
if(var.vt != VT_NULL)
{
var.ChangeType(VT_BSTR);
mFindResult.r(i,3) = var.dblVal;
}
var = m_pRecordset->GetCollect("Qo");
if(var.vt != VT_NULL)
{
var.ChangeType(VT_BSTR);
mFindResult.r(i,4) = var.dblVal;
}
var = m_pRecordset->GetCollect("Qs");
if(var.vt != VT_NULL)
{
var.ChangeType(VT_BSTR);
mFindResult.r(i,5) = var.dblVal;
}
var = m_pRecordset->GetCollect("Qc");
if(var.vt != VT_NULL)
{
var.ChangeType(VT_BSTR);
mFindResult.r(i,6) = var.dblVal;
}
var = m_pRecordset->GetCollect("Sr");
if(var.vt != VT_NULL)
{
var.ChangeType(VT_BSTR);
mFindResult.r(i,7) = var.dblVal;
}

//m_listSr.AddString(Po+" "+Ps+" "+Pc+" "+Qo+" "+Qs+" "+Qc+" "+Sr);
i=i+1;
m_pRecordset->MoveNext();
saucer 2003-08-24
  • 打赏
  • 举报
回复
SELECT * FROM TestDataTable
WHERE Po + Ps + Pc + Qc =
(
SELECT MIN(Po + Ps + Pc + Qc) FROM TestDataTable
WHERE Sr = (SELECT MAX(Sr) FROM FROM TestDataTable)
)

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧