2012-02-10 24 views
2

でUNION文の各列は、私はこれらの単純なSQL文を持って表示:は、SQL Server 2005の

SELECT  COUNT(ID) AS Expr1 
FROM   Table1 
UNION 
SELECT  COUNT(ID) AS Expr2 
FROM   Table1 AS Table1_1 
WHERE  (UPDATED > CREATED) 
UNION 
SELECT  COUNT(DISTINCT DATEPART(year, UPDATED)) AS Expr3 
FROM   Table1 AS Table1_2 

私はその結果を表示する:

それを行うにはどのように
Expr1  Expr2 Expr3 
-----  ----- ----- 
5   3   2 

?私はUNIONWHEREの節でORを使用するよりも信頼性が高く高速であることを理解しています。

答えて

5

UNIONでこれを行うことはできません。これは、列ではなく行の結合を提供します。

あなたの条件のために、このような何かを試してください:あなたが探している値を含む、3つの列であなたに1つの行を与える

SELECT 
    Expr1 = (SELECT COUNT(ID) FROM Table1), 
    Expr2 = (SELECT COUNT(ID) FROM Table1 WHERE UPDATED > CREATED), 
    Expr3 = (SELECT COUNT(DISTINCT DATEPART(year, UPDATED)) FROM Table1) 

+1

ありがとうございました。私は感謝します:) –

2

は何が必要

SELECT 
COUNT(ID) AS Expr1, 
    (SELECT COUNT(ID) FROM Table1 WHERE UPDATED > CREATED) as Expr2, 
    COUNT(DISTINCT DATEPART(year, UPDATED) as Expr3 
FROM Table1 

のようなものはありませんか?

+0

コード内の各行の後にいくつかのコンマがありません....... –

+1

@marc_sありがとう! –