作者daidaibruce (低调)
看板Database
标题Re: [SQL ] 请教一下下列叙述问题如何查询(sum+max)
时间Sun Nov 27 23:04:56 2011
※ 引述《donkeychen (Bad_To_The_Bone)》之铭言:
: table SPJ(SNO,PNO,JNO,QTY)
: table S(SNO,SNAME)
: SNO PNO JNO QTY
: ---------------
: S1 P2 J1 400
: S2 P2 J1 300
: S2 P2 J2 300
: SNO SNAME
: ---------------
: S1 Peter
: S2 John
: 上面两个Table
: 我取我有问题的部分请教
: S为供货商
: P为产品
: J为计画
: 如要查询供给P2产品最多供应商的名称
: 由上面资料可以知道应该是S2 John供应了600为最多
: 请问这样该如何达成呢
: 我想大概是用巢状SELECT
: 但是好像怪怪的
: ------------------
: 我用了access试
: SELECT MAX(TOTAL) as MAX_P2
: FROM(
: SELECT SUM(QTY) AS TOTAL
: FROM SPJ
: WHERE PNO='P2'
: GROUP BY SNO
: )
: ;
: 可以得到
: MAX_P2
: ------
: 600
: ------------------
: 但是因为要串接SNAME与S表格的关系
: 我试了
: SELECT SNO,MAX(TOTAL) as MAX_P2
: FROM(
: SELECT SNO,SUM(QTY) AS TOTAL
: FROM SPJ
: WHERE PNO='P2'
: GROUP BY SNO
: )
: ;
: 会显示不知道SNO是什麽
如果是SQL Server
解决错误讯息应该是你的FROM 子查询table设个别名就可以了
: SELECT M.SNO,MAX(M.TOTAL) as MAX_P2
: FROM(
: SELECT SNO,SUM(QTY) AS TOTAL
: FROM SPJ
: WHERE PNO='P2'
: GROUP BY SNO
: ) M
: SELECT G_SNO,MAX(TOTAL) as MAX_P2
: FROM(
: SELECT SNO AS G_SNO,SUM(QTY) AS TOTAL
: FROM SPJ
: WHERE PNO='P2'
: GROUP BY SNO
: )
: ;
: 一样不能
: 目标是
: SELECT SNAME
: FROM S
: WHERE SNO IN (
: SELECT SNO
: FROM(
: 一个有已经查到MAX(SUM(QTY))
: )
: );
: 在用SNO串的地方卡住了
: 思维不清晰还请大家帮忙
: 感谢大家
只抓第一笔
SELECT S.SNAME,SPJ.PNO,SUM(SPJ.QTY)
FROM S,SPJ
WHERE S.SNO=SPJ.SNO
AND SPJ.PNO='P2'
GROUP BY S.SNAME,SPJ.PNO
ORDER BY 3 DESC
or
SELECT S.SNAME,SPJ.PNO,SUM(SPJ.QTY) TOTAL
INTO AAA
FROM S,SPJ
WHERE S.SNO=SPJ.SNO
AND SPJ.PNO='P2'
GROUP BY S.SNAME,SPJ.PNO
SELECT SNAME,PNO,TOTAL
FROM AAA
WHEER TOTAL=(SELECT MAX(TOTAL) FROM AAA)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.128.36