2010-06-25 51 views
1

這裏的情景:T-SQL 2005:計算所有一排排的議事規則

我有3列的表:「KeyColumn」,「SubKeyColumn」和「BooleanColumn」,其中前兩個是主要的桌子的鑰匙。

對於我的查詢,我想要計算'KeyColumn'中任何給定值的行數,並且我還想知道哪些值對於'BooleanColumn'具有值true。我最初的想法是要建立這樣的查詢:

SELECT 
    COUNT(*) 
    ,COUNT(CASE WHEN BooleanColumn = 1 THEN 1 ELSE 0 END) 
FROM 
    MyTable 
GROUP BY 
    KeyColumn 

然而,第二部分不工作(我不完全知道爲什麼我以爲它會與開始)。在一個查詢中可以做這樣的事嗎?或者我需要做多個查詢才能做到這一點?

+0

你要KeyColumn添加到查詢,所以你知道你在看什麼呢? – DForck42 2010-06-25 19:33:25

回答

5

在第二部分中將COUNT更改爲SUM。 )

+0

不錯。那很簡單...今天不是我的一天。 謝謝! – John 2010-06-25 19:23:29

+0

幾乎我要說的。 – DForck42 2010-06-25 19:32:42

2

... CASE WHEN BooleanColumn = 1 THEN ELSE 1 NULL END ...

COUNT計數非空行。

+0

我明白了;當你知道count()實際上正在計數時,我猜它會有幫助! – John 2010-06-25 19:26:42

0

你也可以做SUM(CAST(BooleanColumn AS TINYINT))