Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 8594

Re: All queries in an SQL statement containing a UNION operator must have an equal number of expressions in their target lists.

$
0
0

Hi,

 

I removed all your UDF and UDT fields above query. Since I don't have such field in my DB.

 

Here is the basic query which works without any error.

 

declare @FDate as datetime

declare @TDate as datetime

declare @Location as VARCHAR (30)

/* SELECT FROM [dbo].[OLCT] S0 WHERE */ SET  @Location = /* S0.Location*/ '[%0]'

/* SELECT FROM [dbo].[OINM] S1 WHERE */ SET  @FDate = /* S1.TaxDate*/ '[%1]'

/* SELECT FROM [dbo].[OINM] S2 WHERE */ SET  @TDate = /* S2.TaxDate*/ '[%2]'

 

 

SELECT

  'Sales'Document,OBTN.DistNumber

  ,NNM1.SeriesName,OINV.DocNum,OCRD.CardName,CRD7.ECCNo,OINV.DocDate,OITM.SWW [HSN Number],INV1.ItemCode,INV1.Dscription,(ITL1.Quantity*-1) [Quantity]

FROM

  INV1

INNER JOIN

  OINV ON INV1.DocEntry=OINV.DocEntry

INNER JOIN

OCRD ON OINV.CardCode = OCRD.CardCode

INNER JOIN

CRD7  ON OCRD.CardCode = CRD7.CardCode

INNER JOIN

  OITM ON INV1.ItemCode=OITM.ItemCode

INNER JOIN

  OITL ON INV1.BaseType=OITL.ApplyType AND INV1.BaseEntry=OITL.ApplyEntry AND INV1.BaseLine=OITL.ApplyLine

INNER JOIN

  ITL1 ON OITL.LogEntry=ITL1.LogEntry

INNER JOIN

  OBTN ON ITL1.MdAbsEntry=OBTN.AbsEntry and ITL1.SysNumber=OBTN.SysNumber AND ITL1.ItemCode=OBTN.Itemcode

 

LEFT JOIN

  NNM1 ON OINV.Series=NNM1.Series

WHERE INV1.LocCode IN (SELECT Code FROM OLCT WHERE Location=@Location)

  AND OINV.DocDate BETWEEN @FDate AND @TDate

UNION ALL

SELECT

  'Sales Return'Document,OBTN.DistNumber

  ,NNM1.SeriesName,ORIN.DocNum,OCRD.CardName,CRD7.ECCNo,ORIN.DocDate,OITM.SWW [HSN Number],RIN1.ItemCode,RIN1.Dscription,(ITL1.Quantity*-1) [Quantity]

FROM

  RIN1

INNER JOIN

  ORIN ON RIN1.DocEntry=ORIN.DocEntry

INNER JOIN

OCRD ON ORIN.CardCode = OCRD.CardCode

INNER JOIN

CRD7  ON OCRD.CardCode = CRD7.CardCode

inner join

  OITM ON RIN1.ItemCode=OITM.ItemCode

INNER JOIN

  OITL ON RIN1.BaseType=OITL.ApplyType AND RIN1.BaseEntry=OITL.ApplyEntry AND RIN1.BaseLine=OITL.ApplyLine

INNER JOIN

  ITL1 ON OITL.LogEntry=ITL1.LogEntry

INNER JOIN

  OBTN ON ITL1.MdAbsEntry=OBTN.AbsEntry and ITL1.SysNumber=OBTN.SysNumber AND ITL1.ItemCode=OBTN.Itemcode
LEFT JOIN

  NNM1 ON ORIN.Series=NNM1.Series

WHERE RIN1.LocCode IN (SELECT Code FROM OLCT WHERE Location=@Location)

  AND ORIN.DocDate BETWEEN @FDate AND @TDate

 

Note:

 

1. For union all, same number of columns should be added both side.

 

2. In your second part you did not change OINV to ORIN after copy and paste.

 

 

Thanks & Regards,

Nagarajan


Viewing all articles
Browse latest Browse all 8594

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>