2013-02-19 45 views
24

वास्तव में सुनिश्चित नहीं हूं कि मैं समारोह छोड़ दिया परिणाम है कि मैं एक क्रॉस से प्राप्त शामिल हो सकते हैं लागू होते हैं:वाम में शामिल होने के एक क्रॉस के साथ एक प्रश्न लागू

select 
iv.invoiceno 
,w.warehouse 
,iv.invoicedate 
,iv.invoicedesc 
,iv.status 
,iv.billingstart as [BillingFrom] 
,iv.billingend as [BillingTo] 
,CAST((iv.invoicesubtotal) as NUMERIC(38,2))as [Sub-Total] 
,CAST((((iv.invoicesubtotal+iv.invoicetax)-iv.invoicetotal)) as NUMERIC(38,2)) as [Discount] 
,CAST((iv.invoicetax) as NUMERIC(38,2)) as [SalesTax] 
,CAST((iv.invoicetotal) as NUMERIC(38,2)) as [Total] 
,d.deal 
,d.dealno 
,ivt.orderno 
,ivt.rectype  
,ivt.rectypedisplay         
,RTRIM(ivt.masterno) as [ICode]        
,ivt.description as [ICodeDesc]        
,ivt.fromdate as [From]         
,ivt.todate as [To]         
,CAST((ivt.days) as NUMERIC(38,2)) as [days]         
,CAST(ivt.qty as NUMERIC(38,0)) as [qty]         
,CAST((ivt.cost) as NUMERIC(38,2)) as [UnitCost]         
,CAST((ivt.rate) as NUMERIC(38,2)) as [rate]          
,CAST((ivt.daysinwk)as NUMERIC(38,2)) as [D/W]        
,CAST((ivt.discountamt)as NUMERIC(38,2)) as [Discount]        
,CAST((ivt.extended)as NUMERIC(38,2)) as [extended]        
,(CASE WHEN ivt.taxable='T' then 'YES' else 'NO' END)as [Taxable] 
,ivt.category 
,(CASE WHEN (ivt.cost > 0 and ivt.rectype='R') THEN CAST((ivt.revenuebase) as NUMERIC (38,2)) ELSE 0 END) as [subrevenue] from invoice iv 
inner join deal d         on d.dealid=iv.dealid 
inner join invoiceitemview ivt      on iv.invoiceid=ivt.invoiceid and iv.invoiceno=ivt.invoiceno 
inner join warehouse w        on w.locationid=iv.locationid and w.inactive<>'T' 
left join category c        on c.categoryid=ivt.categoryid 
left join ordernoteview n       on ivt.orderid=n.orderid and n.billing ='T' where iv.locationid='00009V5H' and iv.invoiceno='H513369' and iv.status in ('CLOSED', 'PROCESSED') and iv.nocharge<>'T'   order by iv.invoiceno, iv.invoicedate,c.category,ivt.masterno 

मैं इस क्वेरी के साथ शामिल होने के एक छोड़ दिया जोड़ना चाहते थे:

select tot.gldate, tot.glno, tot.glacctdesc,     
    tot.debit,tot.credit,tot.glaccountid      from invoice ivt cross apply dbo.funcglforinvoice(ivt.invoiceid, null, null) as tot where ivt.invoiceno='H513369' 

लेकिन जब मैं ऐसा करता हूं तो यह मुझे और अधिक रिकॉर्ड देता है तो वहां होना चाहिए।

यह थोड़ी देर के लिए निष्पादित किया गया है। असल में आंतरिक क्रॉस लागू क्वेरी 204 आइटम उत्पन्न करती है और मैं चाहता था कि मुख्य प्रश्न से वस्तुओं के साथ जुड़ना पड़े; लेकिन मैं कुछ गलत कर रहा हूं यह सुनिश्चित नहीं करता कि वास्तव में क्या है। मदद की सराहना की जाएगी।

+0

क्या आपके पास कोई WHERE क्लॉज या कुछ है ताकि आप चालान तालिका से प्रत्येक रिकॉर्ड वापस नहीं कर रहे हैं? और मैं समझता हूं कि आपने उप-चयन को अलग से चलाया है, इसलिए आप जानते हैं कि यह इस पूरे टुकड़े के लिए 204 से अधिक रिकॉर्ड नहीं लौटा रहा है: (iii.invoiceid, tot.gldate, tot.glno, tot.glacctdesc, tot.debit, tot चुनें। क्रेडिट, ग्लोकाउंटिड इनवॉइस iii क्रॉस dbo.funcglforinvoice (iii.invoiceid, null, null) को लागू करें) – criticalfix

उत्तर

41

आउटपुट आवेदन का उपयोग करें। इसके अलावा मुझे यकीन नहीं है कि आउटपुट के बाद ऑन क्लॉज वास्तव में जरूरी है। यदि चालान एक ही तरह से बाहर आने के रूप में बाहर आ रहा है तो शायद नहीं।

Select iv.invoiceno, iv.invoiceitem,iv.invoiceno 
    from invoice iv 
inner join deal d 
     on d.dealid=iv.dealid 
inner join invoiceitemview ivt 
     on iv.invoiceid=ivt.invoiceid and iv.invoiceno=ivt.invoiceno 
inner join warehouse w 
     on w.locationid=iv.locationid and w.inactive<>'T' 
left join category c 
     on c.categoryid=ivt.categoryid 
left join ordernoteview n 
     on ivt.orderid=n.orderid and n.billing ='T' 
OUTER APPLY dbo.funcglforinvoice(iv.invoiceid, null, null) as tot 
+3

न केवल 'ऑन' क्लॉज की आवश्यकता नहीं है, इसकी अनुमति नहीं है – Andomar

+0

यह काम नहीं करता है मुझे त्रुटि देता है। –

+0

मैंने एंडोमर ने जो कहा, उसके आधार पर मैंने ऑन क्लॉज को हटा दिया। पुनः प्रयास करें। –

संबंधित मुद्दे