Select Count(*)
From (
Select i.name, Count(i.name)
From item As I
Join item_category As ic
On ic.ic_id = i.category_id
Join idetail as ID
On ID.id_category_id = ic.ic_id
Where ic.ic_id = 1002
Group By i.name
) As Z
あなたはすべての3つの列をしたいとあなたはSQL Serverの2005+を使用している場合は、SQL Serverの2005+
With Items As
(
Select I.name, Count(i.name) As ItemCount
From item As I
Join item_category As ic
On ic.ic_id = i.category_id
Join idetail as ID
On ID.id_category_id = ic.ic_id
Where ic.ic_id = 1002
Group By i.name
)
Select Name, ItemCount
, (
Select Count(*)
From Items
) As OverallCount
From Items
もう一つの簡単なバージョンを使用している場合。
Select i.name
, Count(i.name) As CountByName
, Count(*) Over() As TotalCount
From item As I
Join item_category As ic
On ic.ic_id = i.category_id
Join idetail as ID
On ID.id_category_id = ic.ic_id
Where ic.ic_id = 1002
Group By i.name
何かが間違っている必要がありますか、私が何かを見逃しています。 'このクエリは列でグループ化されていないすべての行のみをカウントします'私は見ることのできるところから、このスクリプトはグループ化して 'COUNT(*)'を計算して正しく実行します。 .name'ではなく、すべての行の数です。あなたは実際にどのような出力を得ますか? –
私はまた、あなたが実際に望んでいるものについてちょっと混乱しています。おそらくあなたは 'SELECT COUNT(DISTINCT i.name) 'のようなものを意図しています。 。 .'または 'SELECT i.name、COUNT(id.id_id)FROM。 。 。 LEFT JOINのidetail id。 。 。 GROUP BY i.name'? –