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