Hi allA colleague of mine showed me this strange problem while trying to produce a CSV. It works fine as is, but add the ORDER BY and only the first or the last entry shows up. I checked the MS Knowledge base but I couldn't find anything related to this.if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EmployerOrders]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[EmployerOrders]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EmployerLogin]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[EmployerLogin]GOCREATE TABLE [dbo].[EmployerOrders] ( [OrderNo] [int] IDENTITY (1, 1) NOT NULL , [EmployerId] [int] NOT NULL , [OrderDate] [smalldatetime] NOT NULL ) ON [PRIMARY]GOCREATE TABLE [dbo].[EmployerLogin] ( [EmployerId] [int] IDENTITY (1000, 1) NOT NULL , [LoginId] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Password] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [RegisterDate] [smalldatetime] NOT NULL , [CompanyName] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,) ON [PRIMARY]GOINSERT INTO EmployerLogin SELECT 'a', 'a', GETDATE(), 'Company A' UNION SELECT 'b', 'b', GETDATE(), 'Company B' UNION SELECT 'c', 'c', GETDATE(), 'Company C' UNION SELECT 'd', 'd', GETDATE(), 'Company D' UNION SELECT 'e', 'e', GETDATE(), 'Company E'GO--SELECT * FROM EmployerLogin--GOINSERT INTO EmployerOrders SELECT 1000, GETDATE() UNION ALL SELECT 1001, GETDATE() UNION ALL SELECT 1001, GETDATE() UNION ALL SELECT 1002, GETDATE() UNION ALL SELECT 1002, GETDATE() UNION ALL SELECT 1003, GETDATE()GO--SELECT * FROM EmployerOrders--GO--The problem is hereDECLARE @str varchar(1000)SELECT @str = IsNull(@str + ',','') + CompanyName FROM EmployerLogin a LEFT JOIN EmployerOrders b ON a.EmployerId = b.EmployerIdGROUP BY CompanyName--ORDER BY COUNT(b.OrderNo)PRINT @str
Run this code and it should show a comma-separated list of 4 companies. Uncomment the ORDER BY in the last batch and it returns only one company. Any ideas?Owais
Make it idiot proof and someone will make a better idiot