我已经尝试解决这个问题大约一周了。我真的需要有人的帮助。
我将得到两个或三个“LN”,我必须检查它们在“FODEX”列中的编号是否相同。然后,也许只需添加一列,如果它们具有相同的 FODEX,则打印一列,如果没有,则打印零。
我写了这个查询:
SELECT MSTR.LN , LINK.SEQNO, MMA5_MSTR.FODEX, MMA5_MSTR.DES, MSTR.SL
FROM (((MSTR INNER JOIN LINK
ON MSTR.SEQNO = LINK.SEQNO) INNER JOIN MMA5_MSTR
ON LINK.FODEX = MMA5_MSTR.FODEX))
WHERE (MSTR.LN LIKE "%NOVOLLL%" OR MSTR.LN LIKE "%TRES%" OR MSTR.LN LIKE
"%ENBREL%")
GROUP BY SEQNO, SL
ORDER BY FODEX;
这是我得到的输出,
LN || SEQNO || FODEX || DES || SL
----------------------------------------------------------------
TRES || 71842 || 13 || ANTIDIABE || 12
NOVOLLL || 44340 || 13 || ANTIDIABE || 12
NOVOLLL || 44340 || 1059 || ANTIDIABE || 55
TRES || 71842 || 1059 || ANTIDIABE || 55
TRES || 71842 || 1317 || ANTIDIABE || 66
NOVOLLL || 44340 || 1317 || ANTIDIAB || 66
ENBREL || 40869 || 1722 || TNe || 90
ENBREL || 40869 || 29359 || IMMUNOSUPP || 103
这是我想要得到的输出,
LN || SEQNO || FODEX || DES || SL || Y/N
----------------------------------------------------------------
TRES || 71842 || 13 || ANTIDIABE || 12 || 1
NOVOLLL || 44340 || 13 || ANTIDIABE || 12 || 1
NOVOLLL || 44340 || 1059 || ANTIDIABE || 55 || 1
TRES || 71842 || 1059 || ANTIDIABE || 55 || 1
TRES || 71842 || 1317 || ANTIDIABE || 66 || 1
NOVOLLL || 44340 || 1317 || ANTIDIAB || 66 || 1
ENBREL || 40869 || 1722 || TNe || 90 || 0
ENBREL || 40869 || 29359 || IMMUNOSUPP || 103|| 0
最佳答案
我认为你可以通过聚合来做你想做的事情:
SELECT MSTR.LN,
MAX(MMA5_MSTR.FODEX) = MIN(MMA5_MSTR.FODEX) as is_same_flag
FROM MSTR INNER JOIN
LINK
ON MSTR.SEQNO = LINK.SEQNO INNER JOIN
MMA5_MSTR
ON LINK.FODEX = MMA5_MSTR.FODEX
WHERE MSTR.LN LIKE '%NOVOLLL%' OR
MSTR.LN LIKE '%TRES%' OR
MSTR.LN LIKE '%ENBREL%'
GROUP BY LN;
这不会添加额外的列,但它似乎可以满足您的要求。
关于mysql - SQL,查找两个给定名称在一列中是否具有相同数字的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57565485/