【问题标题】:Correlate 2 columns in SQL关联 SQL 中的 2 列
【发布时间】:2018-02-01 05:51:19
【问题描述】:
SELECT ica.CORP_ID, ica.CORP_IDB, ica.ITEM_ID, ica.ITEM_IDB, 
ica.EXP_ACCT_NO, ica.SUB_ACCT_NO, ica.PAT_CHRG_NO, ica.PAT_CHRG_PRICE, 
ica.TAX_JUR_ID, ica.TAX_JUR_IDB, ITEM_PROFILE.COMDTY_NAME
FROM ITEM_CORP_ACCT ica
,ITEM_PROFILE
WHERE (ica.CORP_ID = 1000) 
AND (ica.CORP_IDB = 4051) 
AND (ica.ITEM_ID = 1000) 
AND (ica.ITEM_IDB = 4051)
AND ica.EXP_ACCT_NO = ITEM_PROFILE.EXP_ACCT_NO

我基本上是说因为 exp 帐户代码是“801500”,那么名称应该返回“Miscellaneous Medic...”。

【问题讨论】:

  • 你能举一个最小的例子并提出一个问题吗?
  • 以文本形式发布表格和数据READ THIS
  • 推广使用 explict JOIN sintaxis,Aaron Bertrand 写了一篇很好的文章 Bad habits to kick : using old-style JOINs 关于它。
  • @Dschoni 可以他们还是他们?不幸的是,对我们来说不是同一件事。
  • SELECT .. CASE ica.EXP_ACCT_NO WHEN '801500' THEN 'Miscellaneous Medic...' ELSE ITEM_PROFILE.COMDTY_NAME END AS COMDTY_NAME FROM .. 我相信

标签: mysql sql image identity-column


【解决方案1】:

您所展示的似乎是不可能的。你在编辑器里编辑过数据???您正在使用 ica.EXP_ACCT_NO = ITEM_PROFILE.EXP_ACCT_NO 加入。因此,EXP_ACCT_NO = 801500 的每个条目也应该具有相同的COMDTY_NAME

但是,您的 ID 实际上可能不是数字,而是带有空格的字符串(801500__ vs 801500)。但是由于您没有执行左外连接,这也意味着您在 ITEM_PROFILE 中有一个具有相同空格的条目。

您还需要正确规范化您的表数据(除非这是一个视图),但这仍然意味着您有错误的数据。

尝试执行相同的查询,但使用TRIM 函数删除空格:https://stackoverflow.com/a/6858168/1688441

示例:

SELECT ica.CORP_ID, ica.CORP_IDB, ica.ITEM_ID, ica.ITEM_IDB, 
ica.EXP_ACCT_NO, ica.SUB_ACCT_NO, ica.PAT_CHRG_NO, ica.PAT_CHRG_PRICE, 
ica.TAX_JUR_ID, ica.TAX_JUR_IDB, ITEM_PROFILE.COMDTY_NAME
FROM ITEM_CORP_ACCT ica
,ITEM_PROFILE
WHERE (ica.CORP_ID = 1000) 
AND (ica.CORP_IDB = 4051) 
AND (ica.ITEM_ID = 1000) 
AND (ica.ITEM_IDB = 4051)
AND trim(ica.EXP_ACCT_NO) = trim(ITEM_PROFILE.EXP_ACCT_NO);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多