Mysql 如何在同一侧使用别名

Mysql 如何在同一侧使用别名,mysql,Mysql,我想使用别名Raseed使用另一个字段d.MtbkRaseed再次计算它,并将其置于条件中,以了解其结果是否大于0,它将给我值,还是它将给我另一个值。 实际上,我需要使用别名,而不是重复它提取Raseed的代码,那么有什么方法可以做到吗 SELECT d.RegDate, d.RegID, d.RegRef,

我想使用别名Raseed使用另一个字段d.MtbkRaseed再次计算它,并将其置于条件中,以了解其结果是否大于0,它将给我值,还是它将给我另一个值。 实际上,我需要使用别名,而不是重复它提取Raseed的代码,那么有什么方法可以做到吗

SELECT 
                            d.RegDate, 
                            d.RegID, 
                            d.RegRef, 
                            d.RegType,
                            d.RegdID, 
                            d.RegdAccID, 
                            d.RegdDetails, 
                            d.RegdM2, 
                            d.RegdD2, 
                            d.RegdNo,
                            d.RegdMtbkRaseed, 
                            d.RegdMtbkFark, 
                            d.RegdMtbkStatus, 
                            d.RegdMtbkNotes,
                            d.RecordID, 
                            d.AccName, 
                            d.CurrencyName,
                            IF(@w = d.RegdAccID,
                            CAST(@s := @s + d.RegdM2-d.RegdD2 AS DECIMAL(10,2)),
                            CAST(@s := 0 + d.RegdM2-d.RegdD2 AS DECIMAL(10,2))) AS Raseed,
                            (@w := d.RegdAccID) as x   
                    FROM 
                            (SELECT 
                            a.RegDate, 
                            a.RegID, 
                            a.RegRef, 
                            a.RegType,
                            b.RegdID, 
                            b.RegdAccID, 
                            b.RegdDetails, 
                            b.RegdM2, 
                            b.RegdD2, 
                            b.RegdNo,
                            b.RegdMtbkRaseed, 
                            b.RegdMtbkFark, 
                            b.RegdMtbkStatus, 
                            b.RegdMtbkNotes,
                            IF(a.RegType='daf',
                                CONCAT('Daf_',(SELECT SanadDafID FROM tblsanaddaf
                                WHERE
                                SanadDafRef = a.RegRef)),
                            IF(a.RegType='qabd',
                                CONCAT('Qbd_',(SELECT SanadQbdID FROM tblsanadqbd
                                WHERE
                                SanadQbdRef = a.RegRef)),
                            IF(a.RegType='tahmil',
                                CONCAT('Tah_',(SELECT FatoraID FROM tblfatora
                                WHERE
                                FatoraRef = a.RegRef)),
                            IF(a.RegType='qaid',
                                CONCAT('Tah_',a.RegID),0)))) as RecordID,
                            n.AccName,
                            o.CurrencyName
                            FROM tblregs2 b
                            INNER JOIN tblregs1 a ON b.RegRef = a.RegRef
                            INNER JOIN tblaccounts n ON n.AccID = b.RegdAccID
                            INNER JOIN tblcurrencies o ON o.CurrencyID = n.AccCurrID      
                            WHERE 
                            (b.RegdM2>0 or b.RegdD2>0)) d
                            CROSS JOIN (SELECT @s := 0) c
                            CROSS JOIN (SELECT @w := 0) i
                            ORDER BY 
                            d.RegdAccID,
                            d.RegDate,                                
                            d.RegID,
                            d.RegdID
我尝试了这个解决方案,但它是错误的:

SELECT 
                            d.RegDate, 
                            d.RegID, 
                            d.RegRef, 
                            d.RegType,
                            d.RegdID, 
                            d.RegdAccID, 
                            d.RegdDetails, 
                            d.RegdM2, 
                            d.RegdD2, 
                            d.RegdNo,
                            d.RegdMtbkRaseed, 
                            d.RegdMtbkFark, 
                            d.RegdMtbkStatus, 
                            d.RegdMtbkNotes,
                            d.RecordID, 
                            d.AccName, 
                            d.CurrencyName,
                            IF(@w = d.RegdAccID,
                            CAST(@s := @s + d.RegdM2-d.RegdD2 AS DECIMAL(10,2)),
                            CAST(@s := 0 + d.RegdM2-d.RegdD2 AS DECIMAL(10,2))) AS Raseed,
                            IF(IF(@w = d.RegdAccID,
                            CAST(@ss := @ss + d.RegdM2-d.RegdD2 AS DECIMAL(10,2)),
                            CAST(@ss := 0 + d.RegdM2-d.RegdD2 AS DECIMAL(10,2))) AS xRaseed <> 0 ,'ok','No') as xxs,
                            (@w := d.RegdAccID) as x   
                    FROM 
                            (SELECT 
                            a.RegDate, 
                            a.RegID, 
                            a.RegRef, 
                            a.RegType,
                            b.RegdID, 
                            b.RegdAccID, 
                            b.RegdDetails, 
                            b.RegdM2, 
                            b.RegdD2, 
                            b.RegdNo,
                            b.RegdMtbkRaseed, 
                            b.RegdMtbkFark, 
                            b.RegdMtbkStatus, 
                            b.RegdMtbkNotes,
                            IF(a.RegType='daf',
                                CONCAT('Daf_',(SELECT SanadDafID FROM tblsanaddaf
                                WHERE
                                SanadDafRef = a.RegRef)),
                            IF(a.RegType='qabd',
                                CONCAT('Qbd_',(SELECT SanadQbdID FROM tblsanadqbd
                                WHERE
                                SanadQbdRef = a.RegRef)),
                            IF(a.RegType='tahmil',
                                CONCAT('Tah_',(SELECT FatoraID FROM tblfatora
                                WHERE
                                FatoraRef = a.RegRef)),
                            IF(a.RegType='qaid',
                                CONCAT('Tah_',a.RegID),0)))) as RecordID,
                            n.AccName,
                            o.CurrencyName
                            FROM tblregs2 b
                            INNER JOIN tblregs1 a ON b.RegRef = a.RegRef
                            INNER JOIN tblaccounts n ON n.AccID = b.RegdAccID
                            INNER JOIN tblcurrencies o ON o.CurrencyID = n.AccCurrID      
                            WHERE 
                            (b.RegdM2>0 or b.RegdD2>0)) d
                            CROSS JOIN (SELECT @s := 0) c
                            CROSS JOIN (SELECT @ss := 0) cc
                            CROSS JOIN (SELECT @w := 0) i
                            ORDER BY 
                            d.RegdAccID,
                            d.RegDate,                                
                            d.RegID,
                            d.RegdID
SELECT 
                                d.RegDate, 
                                d.RegID, 
                                d.RegRef, 
                                d.RegType,
                                d.RegdID, 
                                d.RegdAccID, 
                                d.RegdDetails, 
                                d.RegdM2, 
                                d.RegdD2, 
                                d.RegdNo,
                                d.RegdMtbkRaseed, 
                                d.RegdMtbkFark, 
                                d.RegdMtbkStatus, 
                                d.RegdMtbkNotes,
                                d.RecordID, 
                                d.AccName, 
                                d.CurrencyName,
                                IF(@w = d.RegdAccID,
                                CAST(@s := @s + d.RegdM2-d.RegdD2 AS DECIMAL(10,2)),
                                CAST(@s := 0 + d.RegdM2-d.RegdD2 AS DECIMAL(10,2))) AS Raseed,
                            
                                IF(IF(@w = d.RegdAccID,
                                CAST(@ss := @ss + d.RegdM2-d.RegdD2 AS DECIMAL(10,2)),
                                CAST(@ss := 0 + d.RegdM2-d.RegdD2 AS DECIMAL(10,2)))
                                   <> d.RegdMtbkRaseed AND d.RegdMtbkStatus='MTBK',
                                'Cancel',d.RegdMtbkStatus) AS NewMtbkStatus
                            ,(@w := d.RegdAccID) as x     
                        FROM 
                                (SELECT 
                                a.RegDate, 
                                a.RegID, 
                                a.RegRef, 
                                a.RegType,
                                b.RegdID, 
                                b.RegdAccID, 
                                b.RegdDetails, 
                                b.RegdM2, 
                                b.RegdD2, 
                                b.RegdNo,
                                b.RegdMtbkRaseed, 
                                b.RegdMtbkFark, 
                                b.RegdMtbkStatus, 
                                b.RegdMtbkNotes,
                                IF(a.RegType='daf',
                                    CONCAT('Daf_',(SELECT SanadDafID FROM tblsanaddaf
                                    WHERE
                                    SanadDafRef = a.RegRef)),
                                IF(a.RegType='qabd',
                                    CONCAT('Qbd_',(SELECT SanadQbdID FROM tblsanadqbd
                                    WHERE
                                    SanadQbdRef = a.RegRef)),
                                IF(a.RegType='tahmil',
                                    CONCAT('Tah_',(SELECT FatoraID FROM tblfatora
                                    WHERE
                                    FatoraRef = a.RegRef)),
                                IF(a.RegType='qaid',
                                    CONCAT('Tah_',a.RegID),0)))) as RecordID,
                                n.AccName,
                                o.CurrencyName
                                FROM tblregs2 b
                                INNER JOIN tblregs1 a ON b.RegRef = a.RegRef
                                INNER JOIN tblaccounts n ON n.AccID = b.RegdAccID
                                INNER JOIN tblcurrencies o ON o.CurrencyID = n.AccCurrID      
                                WHERE 
                                (b.RegdM2>0 or b.RegdD2>0)) d
                                CROSS JOIN (SELECT @s := 0) c
                                CROSS JOIN (SELECT @ss := 0) cc
                                CROSS JOIN (SELECT @w := 0) i
                                ORDER BY 
                                d.RegdAccID,
                                d.RegDate,                                
                                d.RegID,
                                d.RegdID