如何根据SQL中另一个表列中的值选择一个位

时间:2013-11-25 14:38:47

标签: sql-server-2012

我想要做的是使用SELECT语句并选择2列,其中一列将是生成位,具体取决于Join'ed表列值。

SELECT [User].Id, 0 --this bit must change depending on Rule.Id 
FROM [dbo].[User] User
INNER JOIN [dbo].[Rule] Rule
ON [Rule].Id = 8
WHERE [User].UserId = @userId
AND [User].ShopId = @shopId

因此,如果Rule.Id = 8,则该位必须为1 如果Rule.Id = 5则位为0,否则位为0

2 个答案:

答案 0 :(得分:1)

建议:

SELECT [User].Id,case when  Rule.Id = 8 then 1 when  Rule.Id = 5 then 0 else 0 end  as bit
FROM [dbo].[User] User
INNER JOIN [dbo].[Rule] Rule
ON [Rule].Id = 8
WHERE [User].UserId = @userId
AND [User].ShopId = @shopId

答案 1 :(得分:1)

如果您使用的是SQL Server,则可以使用CASE函数

http://technet.microsoft.com/en-us/library/ms181765.aspx

SELECT [User].Id, Case Rule.id when 8 Then 1 Else 0 End as MyBit FROM [dbo].[User] User INNER JOIN  dbo].[Rule] Rule ON [Rule].Id = 8 WHERE [User].UserId = @userId AND [User].ShopId = @shopId