2011-09-02 43 views
2

比方說,我有一個表格,其中包含int primary keyvarcharbit值。請記住,我實際上沒有使用這樣的東西,但它說明了我想要在SELECT聲明中做什麼。用於確定結果集中最低位值的T-SQL

仿表:

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' 

但我得到一個錯誤,指出我不能在bit場使用MIN

當代碼是HELLO,我期望0,但是當它是WORLD我期望1。我怎樣才能做到這一點?它甚至有可能嗎?

回答

5

試試這個:

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

您需要的位投轉換成int

CAST(IsTrue as int) 
1

像這樣:

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

祝你好運!