2017-09-26 37 views
1

大家好我有一個SQL查詢,我在使用的情況下,當內部加入,多部分標識符無法綁定在sql案件

我遇到的問題是我得到多部分標識符的錯誤

這裏是我的sql查詢

SELECT 
CASE when row_num = 1 THEN bill_id ELSE NULL 
END as bill_id, listinvoice.sonvinid, 
listinvoice.date, listinvoice.brandname,listinvoice.venue,listinvoice.zone, 
listinvoice.location, 
listinvoice.instructore,listinvoice.paymentid,listinvoice.amount 
FROM (
select bill_id, row_number() 
over 
(partition by bill_id order by listinvoice.date asc) 
    row_num, listinvoice.sonvinid, tid, listinvoice.date 
    , listinvoice.brandname,listinvoice.venue, 
    listinvoice.zone,listinvoice.location, 
    listinvoice.instructore,paymentid,amount 
from listinvoice 
inner join sonvininsert 
on 
sonvininsert.sonvinid=listinvoice.sonvinid 
where 
tid in (select tid from trainerdetails where empname='andrew charles') 
and listinvoice.[date] between 
'2015-02-02' and '2017-02-02' 
)data 

和我的錯誤

消息4104,級別16,狀態1,行1多部分標識符 「listinvoice.sonvinid」無法綁定。消息4104,級別16,州 1,行1多部分標識符「listinvoice.date」不能是 界限。消息4104,級別16,狀態1,行1多部分標識符 「listinvoice.brandname」無法綁定。消息4104,級別16,州 1,行1多部分標識符「listinvoice.venue」不能是 界限。消息4104,級別16,狀態1,行1多部分標識符 「listinvoice.zone」無法綁定。消息4104,級別16,狀態1, 行1多部分標識符「listinvoice.location」不能爲 界限。消息4104,級別16,狀態1,行1多部分標識符 「listinvoice.instructore」無法綁定。消息4104,級別16, 狀態1,行1多部分標識符「listinvoice.paymentid」 無法綁定。消息4104,級別16,狀態1,行1多部分 標識符「listinvoice.amount」無法綁定。

對此有什麼可能的修復?

+0

嘗試從'listinvoice.columnnames'將所有第一個'SELECT'更改爲'data.columnnames' – Simon

+0

從您發佈的內容來看,沒有必要爲此擁有子查詢。 –

+0

這裏的數據是什麼? –

回答

1

您所查詢的是正確的,除了內部查詢的別名,需要一個變化:

SELECT 
    CASE 
     when row_num = 1 
     THEN bill_id 
     ELSE NULL 
    END as bill_id, 
    listinvoice.sonvinid, 
    listinvoice.date, 
    listinvoice.brandname, 
    listinvoice.venue, 
    listinvoice.zone, 
    listinvoice.location, 
    listinvoice.instructore, 
    listinvoice.paymentid, 
    listinvoice.amount 
FROM (
    select 
     bill_id, 
     row_number() over 
      (partition by bill_id order by listinvoice.date asc) row_num, 
     listinvoice.sonvinid, 
     tid, 
     listinvoice.date , 
     listinvoice.brandname, 
     listinvoice.venue, 
     listinvoice.zone, 
     listinvoice.location, 
     listinvoice.instructore, 
     paymentid, 
     amount 
    from listinvoice 
     inner join sonvininsert 
      on 
      sonvininsert.sonvinid=listinvoice.sonvinid 
    where 
     tid in 
      (
       select 
        tid 
       from trainerdetails 
       where empname='andrew charles' 
      ) 
    and listinvoice.[date] 
     between '2015-02-02' and '2017-02-02' 
     )listinvoice -- change required here to correct the alias 
0
SELECT 
CASE when row_num = 1 THEN bill_id ELSE NULL 
END as bill_id, data.sonvinid, 
data.date, data.brandname,data.venue,data.zone, 
data.location, 
data.instructore,data.paymentid,data.amount 
FROM (
select bill_id, row_number() 
over 
(partition by bill_id order by listinvoice.date asc) 
    row_num, listinvoice.sonvinid, tid, listinvoice.date 
    , listinvoice.brandname,listinvoice.venue, 
    listinvoice.zone,listinvoice.location, 
    listinvoice.instructore,paymentid,amount 
from listinvoice 
inner join sonvininsert 
on 
sonvininsert.sonvinid=listinvoice.sonvinid 
where 
tid in (select tid from trainerdetails where empname='andrew charles') 
and listinvoice.[date] between 
'2015-02-02' and '2017-02-02' 
)data -- here is where you named your table 

SELECT語句是從你被點名data派生表拉,所以你需要適當引用表名。

相關問題