getting "No column was specified for column 2 of 'd'" in sql server cte? getting "No column was specified for column 2 of 'd'" in sql server cte? sql-server sql-server

getting "No column was specified for column 2 of 'd'" in sql server cte?


You just need to provide an alias for your aggregate columns in the CTE

d as (SELECT    duration,    sum(totalitems) as sumtotalitemsFROM    [DrySoftBranch].[dbo].[mnthItemWiseTotalQty] ('1') AS BkdQtygroup by duration)


[edit]

I tried to rewrite your query, but even yours will work once you associate aliases to the aggregate columns in the query that defines 'd'.


I think you are looking for the following:

First one:

select     c.duration,     c.totalbookings,     d.bkdqty from    (select                month(bookingdate) as duration,                count(*) as totalbookings            from                entbookings           group by month(bookingdate)    ) AS c     inner join     (SELECT                duration,                sum(totalitems) 'bkdqty'           FROM                [DrySoftBranch].[dbo].[mnthItemWiseTotalQty] ('1') AS BkdQty           group by duration    ) AS d     on c.duration = d.duration

Second one:

select     c.duration,     c.totalbookings,     d.bkdqty from    (select                month(bookingdate) as duration,                count(*) as totalbookings            from                entbookings           group by month(bookingdate)    ) AS c     inner join     (select                month(clothdeliverydate) 'clothdeliverydatemonth',                SUM(CONVERT(INT, deliveredqty)) 'bkdqty'           FROM                barcodetable           where                month(clothdeliverydate) is not null               group by month(clothdeliverydate)    ) AS d     on c.duration = d.duration


I had a similar query and a similar issue.

SELECT    *FROM    Users ru    LEFT OUTER JOIN     (        SELECT ru1.UserID, COUNT(*)        FROM Referral r        LEFT OUTER JOIN Users ru1 ON r.ReferredUserId = ru1.UserID        GROUP BY ru1.UserID    ) ReferralTotalCount ON ru.UserID = ReferralTotalCount.UserID

I found that SQL Server was choking on the COUNT(*) column, and was giving me the error No column was specified for column 2.

Putting an alias on the COUNT(*) column fixed the issue.

  SELECT        *    FROM        Users ru        LEFT OUTER JOIN         (            SELECT ru1.UserID, COUNT(*) AS -->MyCount<--            FROM Referral r            LEFT OUTER JOIN Users ru1 ON r.ReferredUserId = ru1.UserID            GROUP BY ru1.UserID        ) ReferralTotalCount ON ru.UserID = ReferralTotalCount.UserID