T-SQL确定结果集中的最低位值

时间:2011-09-02 20:46:15

标签: sql sql-server tsql

假设我的表格中包含int primary keyvarcharbit值。请记住,我实际上并没有使用这样的东西,但它说明了我在SELECT声明中要做的事情。

虚假表:

CREATE TABLE HorribleSample(
    Id INT IDENTITY(1,1) NOT NULL,
    Code VARCHAR(6) NOT NULL,
    IsTrue BIT NOT NULL,
    CONSTRAINT PK_HorribleSample PRIMARY KEY CLUSTERED(Id ASC)
)

示例数据:

INSERT INTO HorribleSample VALUES('HELLO', 0)
INSERT INTO HorribleSample VALUES('WORLD', 1)
INSERT INTO HorribleSample VALUES('HELLO', 1)
INSERT INTO HorribleSample VALUES('WORLD', 1)

我要做的是从结果集中选择最低位值。我以为我能做到:

SELECT MIN(IsTrue)
FROM HorribleSample
WHERE Code = 'HELLO'

但是我收到一条错误消息,指出我无法在MIN字段上使用bit

当代码为HELLO时,我会期待0,但是当它是WORLD时,我会期望1。我怎么能做到这一点?它甚至可能吗?

3 个答案:

答案 0 :(得分:5)

试试这个:

SELECT TOP 1 * 
    FROM HorribleSample 
WHERE Code = 'HELLO' 
 ORDER BY IsTrue 

答案 1 :(得分:3)

您需要将该位转换为int

CAST(IsTrue as int)

答案 2 :(得分:1)

像这样:

SELECT MIN(CAST(IsTrue AS INT))
FROM HorribleSample
WHERE Code = 'HELLO'
祝你好运!