WITH outer_tbl
AS (
SELECT ROW_NUMBER() OVER (ORDER BY inner_tbl.ctrc_data DESC ) AS KOHANA_DB_ROWNUM, *
FROM (
SELECT * FROM rkm_sac_ctrc
INNER JOIN rkm_sac_nf ON (rkm_sac_ctrc.id_ctrc = rkm_sac_nf.id_ctrc)
WHERE rkm_sac_ctrc.pag_cnpj = '46.344.354/0005-88'
AND rkm_sac_nf.nf_numero = '2023'
) AS inner_tbl
)
SELECT * FROM outer_tbl WHERE KOHANA_DB_ROWNUM BETWEEN 1 AND 15
错误是:
'inner_tbl'指定了'id_ctrc'列多次。
'outer_tbl'指定了'id_ctrc'列多次。
我做错了什么?
答案 0 :(得分:3)
不要使用select *。您需要为每列提供特定的列名,并且您需要连接两个具有相同名称的列。在任何情况下都不应该使用select *,尤其是当你有一个连接时,因为你要返回额外的不需要的信息。
答案 1 :(得分:1)
尝试包含表格的架构
答案 2 :(得分:1)
最有可能的原因是架构 - 您的代码最有可能针对 dbo 运行。您的观点可能在另一个架构中。
答案 3 :(得分:0)
你确定你在正确的数据库中运行它吗?运行此查询以检查:
select
TABLE_CATALOG+'.'+TABLE_SCHEMA+'.'+TABLE_NAME
from INFORMATION_SCHEMA.Views
where TABLE_NAME='rkm_sac_ctrc'
如果返回,请使用结果中给出的模式名称
答案 4 :(得分:0)
默认情况下,在Management Studio中,您的SQL可能正在对主数据库运行。
这就是为什么它找不到你在另一个数据库中的表。
尝试在SQL之前添加USE语句,例如USE DatabaseName
。
如果这不能解决问题,那么您可能需要在表名前加上shema和/或所有者名称。通常,那是dbo
。但它可能是别的东西。在Management Studio中,您可以在“对象资源管理器”窗格中轻松查看。看那里的视图名称。