2016-08-03 6 views
0

以下のステートメントでは問題があります。私はそれを複数の方法で書こうとしましたが、それに応じて異なるエラーを受け取ります。これは返すSQL Server - 複数テーブルのCOUNTステートメントでの問題

SELECT COUNT(*) 
FROM AdventureWorks2012.HumanResources.Department AS Alias1 
, (SELECT COUNT(*) 
    FROM AdventureWorks2012.HumanResources.Employee) AS Alias2 
, (SELECT COUNT(*) 
    FROM AdventureWorks2012.HumanResources.EmployeeDepartmentHistory) AS Alias3 

:私は

 
--------+--------+-------- 
| alias1 | alias2 | alias3 | 
--------+--------+-------- 
| count1 | count2 | count3 | 
--------+--------+-------- 

方法1 ...そうのように、別々の(しかし、隣接する)欄の各カウントを持つ単一のテーブルに出力する結果が欲しいですAlias2(およびAlias3という)上のエラー私は、次のようにそれを手直ししようとすると

「いいえ欄が 『Alias2』の列1のために指定されていない」、述べて:

SELECT COUNT(*) 
FROM AdventureWorks2012.HumanResources.Department AS Alias1 
, (SELECT COUNT(*) AS Alias2 
    FROM AdventureWorks2012.HumanResources.Employee) 
, (SELECT COUNT(*) AS Alias3 
    FROM AdventureWorks2012.HumanResources.EmployeeDepartmentHistory) 

エラーは、 '、'の近くの構文が誤っているSELECT文を区切る '、'にシフトします。 AS、ID、またはQUOTED_IDを期待。」

ことは私は何をしようとしてることは十分に単純なようだが、私は空に上がってくるよ。任意の助けをいただければ幸いです。その結果、あなたを得るために

+0

このノートSQL-Serverのどのバージョンですか?この自然な結合はde (* =) –

+1

@clifton_h SQL Serverはナチュラルジョインをサポートしていません。古いスタイルのANSI結合構文(FROM a、b )where句を忘れた場合、クロス結合につながりますか?もしそうなら、それは廃止されていません。ちょうどお勧めしません。 –

+0

Gregでは、[手動ですべてのテーブルをスキャンするのではなく、 'sys.partitions'からカウントを取得するだけではどうでしょう。](http://sqlperformance.com/2014/10/t-sql-queries/bad-habits-count- - ハード - 方法)?または、実際の問題を真に説明していないAdventureWorksテーブルに対するこの架空のクエリですか? –

答えて

0

1つの方法派生テーブルとして各ステートメントを使用することですしたい:

SELECT * FROM 
(SELECT COUNT(*) AS Alias1 FROM AdventureWorks2012.HumanResources.Department) AS a1 , 
(SELECT COUNT(*) AS Alias2 FROM AdventureWorks2012.HumanResources.Employee) AS a2, 
(SELECT COUNT(*) AS Alias3 FROM AdventureWorks2012.HumanResources.EmployeeDepartmentHistory) AS a3 

(または、別の答えに示すように、あなたは、サブクエリなどのステートメントを使用することができます)

1
SELECT 
    (SELECT COUNT(*) FROM AdventureWorks2012.HumanResources.Department) AS Alias1, 
    (SELECT COUNT(*) FROM AdventureWorks2012.HumanResources.Employee) AS Alias2, 
    (SELECT COUNT(*) FROM AdventureWorks2012.HumanResources.EmployeeDepartmentHistory) AS Alias3 
+0

これは、まったく同じように動作します。ありがとう、アントン! – TheyCallMeGreg

関連する問題