首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求一个select语句,得到多列中的最大值和最小值 [已结贴,结贴人:wnba1983]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 19:10:12 楼主
    比如我有个表

    a              b            c                d
    ----------------------------------------------------
    10            20            30              40

    谁给我写一个select语句,得到如下结构

    x        y
    -------------
    10      40   

    也就是得到上面一条记录中的最大列和最小列(where条件只查到一行记录)

    30  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 20:03:461楼 得分:5
    能写出这样的sql么???我有点怀疑啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liuyann
    • 等级:
    发表于:2008-05-11 20:17:512楼 得分:5
    如果只有4列,或有限的列,还是可以的,
    ==== ====
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 20:21:253楼 得分:5
    行专列,然后读取,可以用 ROWNO 作为标识
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 22:20:464楼 得分:5
    select least(a,b,c,d), greatest(a,b,c,d) from t
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 08:34:555楼 得分:0
    引用 4 楼 cenlmmx 的回复:
    select least(a,b,c,d), greatest(a,b,c,d) from t

    我就是用你这样的方法做的,但是我有96个字段。。。。
    写死个我了。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 08:53:136楼 得分:0

    SQL code
    为什么不能这样写呢 select a,b,c,d least(a,b,c,d) x, greatest(a,b,c,d) y from t 报错说非单组分组函数,我这样写通过了 select name, dliang, (select MAX(greatest(S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S20, S21, S22, S23, S24, S25, S26, S27, S28, S29, S30, S31, S32, S33, S34, S35, S36, S37, S38, S39, S40, S41, S42, S43, S44, S45, S46, S47, S48, S49, S50, S51, S52, S53, S54, S55, S56, S57, S58, S59, S60, S61, S62, S63, S64, S65, S66, S67, S68, S69, S70, S71, S72, S73, S74, S75, S76, S77, S78, S79, S80, S81, S82, S83, S84, S85, S86, S87, S88, S89, S90, S91, S92, S93, S94, S95, S96)) from hdbalanceddjh t where to_char(hddate,'yyyy-mm-dd')= to_char(sysdate-3,'yyyy-mm-dd') and name ='全网发电') maxData, (select MIN(least(S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S20, S21, S22, S23, S24, S25, S26, S27, S28, S29, S30, S31, S32, S33, S34, S35, S36, S37, S38, S39, S40, S41, S42, S43, S44, S45, S46, S47, S48, S49, S50, S51, S52, S53, S54, S55, S56, S57, S58, S59, S60, S61, S62, S63, S64, S65, S66, S67, S68, S69, S70, S71, S72, S73, S74, S75, S76, S77, S78, S79, S80, S81, S82, S83, S84, S85, S86, S87, S88, S89, S90, S91, S92, S93, S94, S95, S96)) from hdbalanceddjh t where to_char(hddate,'yyyy-mm-dd')=to_char(sysdate-3,'yyyy-mm-dd') and name in'全网发电') minData from hdbalanceddjh where to_char(hddate,'yyyy-mm-dd')=to_char(sysdate-3,'yyyy-mm-dd') and name in'全网发电' union select name, dliang, (select MAX(greatest(S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S20, S21, S22, S23, S24, S25, S26, S27, S28, S29, S30, S31, S32, S33, S34, S35, S36, S37, S38, S39, S40, S41, S42, S43, S44, S45, S46, S47, S48, S49, S50, S51, S52, S53, S54, S55, S56, S57, S58, S59, S60, S61, S62, S63, S64, S65, S66, S67, S68, S69, S70, S71, S72, S73, S74, S75, S76, S77, S78, S79, S80, S81, S82, S83, S84, S85, S86, S87, S88, S89, S90, S91, S92, S93, S94, S95, S96)) from hdbalanceddjh t where to_char(hddate,'yyyy-mm-dd')= to_char(sysdate-3,'yyyy-mm-dd') and name ='全网用电') maxData, (select MIN(least(S1, S2, S3, S4, S5, S6, S7, S8, S9, S10, S11, S12, S13, S14, S15, S16, S17, S18, S19, S20, S21, S22, S23, S24, S25, S26, S27, S28, S29, S30, S31, S32, S33, S34, S35, S36, S37, S38, S39, S40, S41, S42, S43, S44, S45, S46, S47, S48, S49, S50, S51, S52, S53, S54, S55, S56, S57, S58, S59, S60, S61, S62, S63, S64, S65, S66, S67, S68, S69, S70, S71, S72, S73, S74, S75, S76, S77, S78, S79, S80, S81, S82, S83, S84, S85, S86, S87, S88, S89, S90, S91, S92, S93, S94, S95, S96)) from hdbalanceddjh t where to_char(hddate,'yyyy-mm-dd')=to_char(sysdate-3,'yyyy-mm-dd') and name in'全网用电') minData from hdbalanceddjh where to_char(hddate,'yyyy-mm-dd')=to_char(sysdate-3,'yyyy-mm-dd') and name in'全网用电' union 这样写的效率好低啊,查询起来很慢,楼上的能给个好方法吗

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 10:01:057楼 得分:5
    拼接SQL;
    另做个统计表,存放每天的最大最小数据;
    做个JOB,每天凌晨时统计一下数据放到一个临时表里.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 10:19:378楼 得分:5
    行可以转化成列吗?高手来
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved