1

通常の列のセットを取得し、データベース内のレコード数を含む列を追加できるクエリを知りたいのですが。

たとえば、私がこれらのデータを持っているとしましょう。

ColA   ColB   ColC
----   ----   ----
1AB1   CARR   APPL
2BC1   APPL   APPL
1AB1   MAXR   APPL

それらの行から、これらの列を生成したいと思います

ColA   ColB   ColC   Count
----   ----   ----   -----
1AB1   CARR   APPL     2

A.これはこれまでの私の現在のselectステートメントです。

SELECT top 1 myTBL.* from mydb WHERE ColA = '1AB1'

B.しかし、4番目の列を取得するために次のコードを追加できなかったようです。

SELECT count(myTBL.*) as Count from mydb WHERE ColA = '1AB1'

PS私が持っているAとBのselectステートメントを組み合わせたselectステートメントを取得したいと思います。私が得ているエラーは、GROUPBY句について何かを示しています..これを理解するのに苦労しています..与えられた例に使用できる正しいselectステートメントを作成できることを願っています..すべての助けに感謝します。 。

4

4 に答える 4

3

これを行うにはいくつかの方法がありますが、明確な主キーがなければ、分析関数(別名ウィンドウ関数)は良い選択に見えます。

select cola, colb, colc, cnt as "Count" from (
select
cola,
colb,
colc,
row_number () over (partition by cola order by colb) rn,
count (*) over (partition by cola) cnt

from
table1

where cola = '1AB1'
) as d
where rn = 1 

これは与える:

+------------+------------+------------+-------+
|    cola    |    colb    |    colc    | Count |
+------------+------------+------------+-------+
| 1AB1       | CARR       | APPL       |     2 |
+------------+------------+------------+-------+
于 2012-12-21T08:57:48.017 に答える
1
SELECT TOP 1 ColA, ColB, ColC, COUNT(*) OVER (PARTITION BY ColA) AS Count
FROM mydb
WHERE ColA = '1AB1'

SQLFiddleのデモ

于 2012-12-25T16:06:59.593 に答える
0

ColAのカウントが必要な場合は、このようなことをします

SELECT top 1 cola,colb,colc, (SELECT count(*) from mytbl t2 WHERE t2.ColA = t1.colA) 
FROM mytbl t1 
WHERE cola = '1AB1'

サブクエリを使用する場合、mytblを使用することはできません。*

そして他の方法はこれです:

Select t1.*,t2.count 
FROM mytbl t1 ,
(SELECT cola,count(*) as "count" from mytbl t2 group by cola) t2
where t1.cola = t2.cola
于 2012-12-21T08:54:52.037 に答える
0

以下のクエリは、COLAのテーブルの値をグループ化してカウントし、カウントを使用してColAの元のテーブルにリンクします。

SELECT myTable.ColA , myTable.ColB, myTable.ColC, ColASummary.ColA_Count 
FROM myTable
INNER JOIN 
(
SELECT ColA, COUNT(ColA) AS ColA_Count 
FROM myTable 
GROUP By ColA
)  AS ColASummary
ON myTable.ColA = ColASummary.ColA

他の列にも同じことが必要な場合は、この方法で追加のサマリーテーブルをリンクできます。

于 2012-12-21T10:49:44.960 に答える