2010-11-17 43 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中,您可以在對象資源管理器窗格中輕鬆查看。看看那裏的視圖名稱。