August 15, 2010 at 11:25 am
I wantto list each boolean fields if true as rows.
is it possible via SQL(T-SQL syntax in SQL Server)?
thanks
August 15, 2010 at 12:18 pm
The following code is one way of providing what you asked for...however you may require more flexilibilty in which case you really need to post back.
I would also strongly suggest that you read this:
http://www.sqlservercentral.com/articles/Best+Practices/61537/
If you are prepared to provide the required CREATE/INSERT statements as the article above recommends and also your desired results you will find that you will receive quick and tested responses from this forum....all of whom give their time freely.
It would also be useful to know the "scale" of your problem...ie how many rows
Heres the code :
USE TEMPDB
GO
---=== create a table
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[TABLE_RECORDS]') AND type in (N'U'))
DROP TABLE TABLE_RECORDS
CREATE TABLE [TABLE_RECORDS](
[ID] [int] IDENTITY(1,1) NOT NULL,
[B1] [bit] NOT NULL,
[B2] [bit] NOT NULL,
[B3] [bit] NOT NULL
)
---=== insert some records
SET IDENTITY_INSERT [dbo].[TABLE_RECORDS] ON;
INSERT INTO [dbo].[TABLE_RECORDS]([ID], [B1], [B2], [B3])
SELECT 1, 1, 1, 1 UNION ALL
SELECT 2, 1, 0, 1 UNION ALL
SELECT 3, 0, 0, 0
GO
SET IDENTITY_INSERT [dbo].[TABLE_RECORDS] OFF;
---=== results
SELECT ID, CASE WHEN B1 = 1 THEN 'B1 SELECTED' ELSE NULL END AS Expr1
FROM dbo.TABLE_RECORDS
WHERE (ID = 2) AND (B1 = 1)
UNION ALL
SELECT ID, CASE WHEN B2 = 1 THEN 'B2 SELECTED' ELSE NULL END AS Expr1
FROM dbo.TABLE_RECORDS
WHERE (ID = 2) AND (B2 = 1)
UNION ALL
SELECT ID, CASE WHEN B3 = 1 THEN 'B3 SELECTED' ELSE NULL END AS Expr1
FROM dbo.TABLE_RECORDS
WHERE (ID = 2) AND (B3 = 1)
________________________________________________________________
you can lead a user to data....but you cannot make them think
and remember....every day is a school day
August 15, 2010 at 3:48 pm
By cross joining gah's TABLE_RECORDS to a virtual tally table, I have arrived at the following
SELECT ID, Expr1
FROM
(
SELECT ID, CASE N WHEN 1 THEN CASE WHEN B1 = 1 THEN 'B1 SELECTED' END
WHEN 2 THEN CASE WHEN B2 = 1 THEN 'B2 SELECTED' END
WHEN 3 THEN CASE WHEN B3 = 1 THEN 'B3 SELECTED' END
END AS Expr1
FROM dbo.TABLE_RECORDS
CROSS JOIN
(SELECT 1 AS N UNION ALL SELECT 2 UNION ALL SELECT 3) AS Tally
) AS Z
WHERE NOT Expr1 IS NULL
AND ID = 2
Viewing 3 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic. Login to reply