Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
soorma
Yak Posting Veteran
52 Posts |
Posted - 2007-02-01 : 14:39:14
|
| When i run this SQL Query i get nulls in some fields. I don't want to show records when any of the fields is null. Actually i got some help from the forum to make this query. The query wroks fine. But need to exclude nulls. SELECT MAX(CASE WHEN propertyName = 'FirstName' THEN propertyValue END) AS FirstName, MAX(CASE WHEN propertyName = 'LastName' THEN propertyValue END) AS LastName, MAX(CASE WHEN propertyName = 'Company Name' THEN propertyValue END) AS CompanyName, MAX(CASE WHEN propertyName = 'City' THEN propertyValue END) AS City, d.UserID, Users.Email AS email FROM (SELECT PropertyName, PropertyValue, UserID FROM ProfilePropertyDefinition AS ppd INNER JOIN UserProfile AS up ON up.PropertyDefinitionID = ppd.PropertyDefinitionID) d INNER JOIN Users ON d.UserID = Users.UserID GROUP BY d.UserID, Users.Email ORDER BY d.UserIDHere are the Table DefinationsCREATE TABLE [ProfilePropertyDefinition] ( [PropertyDefinitionID] [int] IDENTITY (1, 1) NOT NULL , [PortalID] [int] NULL , [ModuleDefID] [int] NULL , [Deleted] [bit] NOT NULL , [DataType] [int] NOT NULL , [DefaultValue] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PropertyCategory] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PropertyName] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [Length] [int] NOT NULL CONSTRAINT [DF_ProfilePropertyDefinition_Length] DEFAULT (0), [Required] [bit] NOT NULL , [ValidationExpression] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [ViewOrder] [int] NOT NULL , [Visible] [bit] NOT NULL , CONSTRAINT [PK_ProfilePropertyDefinition] PRIMARY KEY CLUSTERED ( [PropertyDefinitionID] ) ON [PRIMARY] , CONSTRAINT [FK_ProfilePropertyDefinition_Portals] FOREIGN KEY ( [PortalID] ) REFERENCES [Portals] ( [PortalID] ) ON DELETE CASCADE ) ON [PRIMARY]GOCREATE TABLE [UserProfile] ( [ProfileID] [int] IDENTITY (1, 1) NOT NULL , [UserID] [int] NOT NULL , [PropertyDefinitionID] [int] NOT NULL , [PropertyValue] [nvarchar] (3750) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PropertyText] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [Visibility] [int] NOT NULL CONSTRAINT [DF__UserProfi__Visib__0D99FE17] DEFAULT (0), [LastUpdatedDate] [datetime] NOT NULL , CONSTRAINT [PK_UserProfile] PRIMARY KEY NONCLUSTERED ( [ProfileID] ) ON [PRIMARY] , CONSTRAINT [FK_UserProfile_ProfilePropertyDefinition] FOREIGN KEY ( [PropertyDefinitionID] ) REFERENCES [ProfilePropertyDefinition] ( [PropertyDefinitionID] ) ON DELETE CASCADE , CONSTRAINT [FK_UserProfile_Users] FOREIGN KEY ( [UserID] ) REFERENCES [Users] ( [UserID] ) ON DELETE CASCADE ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]GOCREATE TABLE [Users] ( [UserID] [int] IDENTITY (1, 1) NOT NULL , [Username] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [FirstName] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [LastName] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [IsSuperUser] [bit] NOT NULL CONSTRAINT [DF_Users_IsSuperUser] DEFAULT (0), [AffiliateId] [int] NULL , [Email] [nvarchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [DisplayName] [nvarchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL CONSTRAINT [DF_Users_DisplayName] DEFAULT (''), [UpdatePassword] [bit] NOT NULL CONSTRAINT [DF_Users_UpdatePassword] DEFAULT (0), CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ( [UserID] ) ON [PRIMARY] , CONSTRAINT [IX_Users] UNIQUE NONCLUSTERED ( [Username] ) ON [PRIMARY] ) ON [PRIMARY]GO |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-02-01 : 15:01:32
|
The query look bloated. Try thisSELECT MAX(CASE WHEN xx.propertyName = 'FirstName' THEN xx.propertyValue END) AS FirstName, MAX(CASE WHEN xx.propertyName = 'LastName' THEN xx.propertyValue END) AS LastName, MAX(CASE WHEN xx.propertyName = 'Company Name' THEN xx.propertyValue END) AS CompanyName, MAX(CASE WHEN xx.propertyName = 'City' THEN xx.propertyValue END) AS City, xx.UserID, u.EmailFROM ProfilePropertyDefinition AS ppdINNER JOIN UserProfile AS up ON up.PropertyDefinitionID = ppd.PropertyDefinitionIDINNER JOIN Users AS u ON u.UserID = xx.UserID GROUP BY xx.UserID, u.EmailORDER BY xx.UserID You must change the xx column prefix to the appropriate!Peter LarssonHelsingborg, Sweden |
 |
|
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-02-01 : 15:06:33
|
| [code]SELECT FirstName, LastName, CompanyName, City, UserID, EmailFROM ( SELECT MAX(CASE WHEN xx.propertyName = 'FirstName' THEN xx.propertyValue END) AS FirstName, MAX(CASE WHEN xx.propertyName = 'LastName' THEN xx.propertyValue END) AS LastName, MAX(CASE WHEN xx.propertyName = 'Company Name' THEN xx.propertyValue END) AS CompanyName, MAX(CASE WHEN xx.propertyName = 'City' THEN xx.propertyValue END) AS City, xx.UserID, u.Email FROM ProfilePropertyDefinition AS ppd INNER JOIN UserProfile AS up ON up.PropertyDefinitionID = ppd.PropertyDefinitionID INNER JOIN Users AS u ON u.UserID = xx.UserID GROUP BY xx.UserID, u.Email ) AS dWHERE FirstName IS NOT NULL AND LastName IS NOT NULL AND CompanyName IS NOT NULL AND City IS NOT NULL AND UserID IS NOT NULL AND Email IS NOT NULLORDER BY UserID[/code]Peter LarssonHelsingborg, Sweden |
 |
|
|
soorma
Yak Posting Veteran
52 Posts |
Posted - 2007-02-01 : 18:18:48
|
| Thanks for your help. |
 |
|
|
|
|
|
|
|