2

この SQL:

select Name,
       (select COUNT(1) from tbl_projects where statusId = tbl_sections.StatusId) as N
from tbl_sections
left join tbl_section_names on tbl_section_names.Id = NameId

次のデータを生成します。

Name    N
Completed   133
Cancelled   100
Unassigned  1
Sales   49
Development 10
Development 4
Development 1

次のようにデータを返すように変更しようとしています。

Name    N
Completed   133
Cancelled   100
Unassigned  1
Sales   49
Development 15

(つまり、名前が同じ行を合計します)

誰もがこれを機能させる方法についていくつかの手がかりを提案できますか? SUM と GROUP BY が必要だと思いますが、取得するのはエラーだけなので、クエリを実行することさえありません。

4

5 に答える 5

1

このクエリを試してください。Nでグループ化して合計しNameます。

SELECT Name, SUM(N) 
FROM (
    SELECT Name,
    (SELECT COUNT(1) 
        FROM tbl_projects 
        WHERE statusId = tbl_sections.StatusId
    ) AS N
    FROM tbl_sections
    LEFT JOIN tbl_section_names ON tbl_section_names.Id = NameId
) a
GROUP BY a.Name
于 2013-03-12T22:34:16.127 に答える
1

これを試して

select Name, count(p.statusid) N
from tbl_sections
left join tbl_section_names on tbl_section_names.Id = NameId
left outer join tbl_projects p on tbl_sections.StatusId = p.statusId 
group by Name
于 2013-03-12T22:36:12.910 に答える
0
Select Name, Sum(N) from
    (select Name,
       (select COUNT(1) from tbl_projects where statusId = tbl_sections.StatusId) as N
    from tbl_sections
    left join tbl_section_names on tbl_section_names.Id = NameId)
group by Name
于 2013-03-12T22:33:57.197 に答える
0

このクエリは、ステータスごとのカウントを示しています。つまり、Development には 3 つの異なるステータスを持つセクションがあり、クエリはこれを反映し、ステータスを列として追加するとより意味があります。

select Name, tbl_sections.StatusId,
       (select COUNT(1) from tbl_projects where statusId = tbl_sections.StatusId) as N
from tbl_sections
left join tbl_section_names on tbl_section_names.Id = NameId

データベースの構造はわかりませんが、名前ごとのセクション数が必要な場合は、次のようになります。これは基本的に、結合の結果を調べてから、一意の名前が出現する回数を示すことで要約します。

select Name, count(*)
from tbl_sections
left join tbl_section_names on tbl_section_names.Id = NameId
Group By Name
于 2013-03-12T22:37:12.123 に答える
0

これを試してみてください。

select Name,
   SUM(select COUNT(1) from tbl_projects where statusId = tbl_sections.StatusId) as N
from tbl_sections
left join tbl_section_names on tbl_section_names.Id = NameId
group by Name
于 2013-03-12T22:37:33.657 に答える