同时使用RANK()OVER(按列_1按行列分组asc)作为Rank
它说" OVER"
附近的语法不正确用于计算sybase中的等级的任何替代方法?
先谢谢。
CODE:
SELECT
BRN AS br_name,
SUM(TGAB) AS gross_amt_base
from (
SELECT
MB.BNAC AS BRN,
MT.TGAB * MTTM.MQR AS TGAB
FROM
dbo.MB MB,
dbo.MT MT,
dbo.MTTM MTTM,
dbo.MPPGTT MPPGTT
WHERE
MT.TEI IN (SELECT MAC.AAEI
FROM
dbo.MAC MAC,
dbo.MEA MEA,
dbo.MC MAC
WHERE
MAC.AASN = 'JPFA 5201 ' AND
MAC.AL = 'en-us' AND
MAC.CL = 'en-us' AND
MAC.AAEI = MEA.ea_id AND
MAC.CC = MEA.EBC) AND
MT.TED >= '2012-03-01 00:00:00.000' AND
MT.TED <= '2012-03-30 00:00:00.000' AND
MT.TBC NOT IN
(
0,
2,
99,
752,
1000001,
2000002,
390003431
)
AND
MB.BL = 'en-tx' AND
(MT.TCI != 'Y' OR
MT.TCD > '2012-03-30 00:00:00.000' OR
MT.TCD < '2012-03-01 00:00:00.000' OR
(MT.TOED < '2012-03-01 00:00:00.000' OR
MT.TOED > '2012-03-30 00:00:00.000') AND
NOT MT.TOED IS NULL) AND
MTTM.MLL = 'en-us' AND
MTTM.MTC = 7000 AND
MTTM.MTP = 'Y' AND
MTTM.MGO IN
(
'Purchases',
'Sales'
)
AND
ISNULL (MTTM.MAWF,
'LINK') = ISNULL (MT.TAWF,
'LINK') AND
MT.TGAB > 0 AND
MB.br_code = MT.TBC AND
MPPGTT.PTTC = MT.tr_tt_code AND
MTTM.mtttm_tt_code = MPPGTT.PTTC) AS A
GROUP BY BRN
答案 0 :(得分:0)
如果您的Sybase版本不支持窗口函数(这是错误消息所示),那么您可以使用相关的子查询:
select t.*,
(select 1 + count(*)
from t t2
where t2.column_1 = t.column_1 and
t2.column_2 < t.column_2
) as therank
from t;
答案 1 :(得分:0)
在Sybase IQ中提供了rank_(Analytical)函数,但在ASE中不提供,因此对于后者,您必须以Gordon风格对其进行破解。