【问题标题】:Ambiguous column name 'poid'不明确的列名“poid”
【发布时间】:2018-01-21 21:23:41
【问题描述】:

在加入表之前查询很好,但是在加入 PatidInfo 表以获取 patid 后,它显示 Ambiguous column name 'poid',有人可以帮我吗?

SELECT [ProDbArchive].[dbo].[t_structuredNotes].[noteName] 
       ,[ProDbArchive].[dbo].[t_structuredNotes].[poid] 
       ,[ProDbArchive].[dbo].[t_Patientinfo].[patid] 
       ,CAST ([ProDbArchive].[dbo].fn_tstampint([statedNoteTS]+[ProDbArchive].[dbo].fn_offset(poid)) As DATETIME  )As StatedNoteTime
       ,[ProDbArchive].[dbo].[t_structuredNotes].[noteType]
       ,[ProDbArchive].[dbo].[t_structuredNotes].[noteText]

  FROM [ProDbArchive].[dbo].[t_structuredNotes]
 INNER JOIN [ProDbArchive].[dbo].[t_Patientinfo] ON [ProDbArchive].[dbo].[t_structuredNotes].[poid]= [ProDbArchive].[dbo].[t_Patientinfo].[poid]
  where noteType = 'Procedure' 
  and noteName = 'Bedside Tracheostomy'
  and CAST ([ProDbArchive].[dbo].fn_tstampint([statedNoteTS]+[ProDbArchive].[dbo].fn_offset(poid)) As DATETIME  ) > '2017-01-01 00:00:00.000' 
  and CAST ([ProDbArchive].[dbo].fn_tstampint([statedNoteTS]+[ProDbArchive].[dbo].fn_offset(poid)) As DATETIME  ) < '2017-08-01 00:00:00.000' 
order by statedNoteTS asc

【问题讨论】:

    标签: sql sql-server-2008 select


    【解决方案1】:

    您的t_structuredNotest_Patientinfo 表都有一个poid 列,因此当您尝试在没有表名的情况下引用它时(例如,在fn_offset(poid) 中),您会收到关于该列不明确的错误,因为数据库不知道你指的是哪一个。

    由于它们的值无论如何都应该相等(根据您的连接条件),只需选择一个并以完全限定的方式指定它。例如:

    fn_offset([ProDbArchive].[dbo].[t_structuredNotes].[poid])
    

    【讨论】:

    • 我还建议引入别名以减少整个查询的混乱程度。
    • 非常感谢 Mureinik 专家,它正在工作!
    猜你喜欢
    • 1970-01-01
    • 2014-05-03
    • 2020-11-28
    • 2023-03-08
    • 1970-01-01
    • 2017-04-09
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多