2010-11-17 31 views
1
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 

的错误是:SQL Server 2005查询语法错误:“'id_ctrc'列多次为'inner_tbl'指定。”

The column 'id_ctrc' was specified multiple times for 'inner_tbl'.

The column 'id_ctrc' was specified multiple times for 'outer_tbl'.

我在做什么错?

+6

这些都是很棒的表格/列名称。和他们一起工作很有趣? – 2010-11-17 13:58:36

+0

@Mitch - 你是说不明白'rkm_sac_ctrc'是什么? * snigger *每个人都知道这意味着什么! – codingbadger 2010-11-17 14:00:49

+0

@Mitch - 这是一种非英语语言,这些语言实际上可能是非常合适的描述性名称。 – 2010-11-17 14:01:11

回答

3

请勿使用select *。您需要为每个列指定特定的列名称,因此您必须加入两个具有相同名称的列。你不应该在任何情况下使用select *,特别是当你有一个join时,因为你正在返回额外的不需要的信息。

+0

我很笨。谢谢。你救了我的命! – 2010-11-17 14:48:44

1

尝试包括表

+2

虚拟-1。这不是一个答案。这必须是一个评论。 – Aliostad 2010-11-17 14:04:45

0

你确定你是在正确的数据库运行此的模式?运行此查询检查:

select 
    TABLE_CATALOG+'.'+TABLE_SCHEMA+'.'+TABLE_NAME 
    from INFORMATION_SCHEMA.Views 
    where TABLE_NAME='rkm_sac_ctrc' 

如果返回它,在结果

+0

我是在错误的模式中做的...问题已被编辑。 – 2010-11-17 14:15:01

1

最可能的原因给出使用模式名是模式 - 你的代码将针对DBO最有可能的运行。您的意见可能在另一个架构中。

0

默认情况下,在Management Studio中,您的SQL可能针对主数据库运行。

这就是为什么它无法找到您的表,这是在另一个数据库中。

尝试在SQL之前添加USE语句,例如USE DatabaseName

如果这样不能解决问题,那么您可能需要在表格名称前添加shema和/或所有者名称。很多时候,这是dbo。但它可能是别的。在Management Studio中,您可以在对象资源管理器窗格中轻松查看。看看那里的视图名称。