1

シートの交換ごとにシートの総数を取得するにはどうすればよいですか?

例:

select sheetID,
       ..
from SomeTable

結果は次のようになります。

sheetID
-----------
1000
1000
1000
1000
3000
3000
3000

だから私はこのようなものが欲しい:

select sheetID,
       count(sheetID) as TotalsheetCount
from SomeTable

sheetIDの変更ごとにカウントアップを分割する方法がわかりません。

だから私は本質的にこれで終わるでしょう:

sheetID   TotalsheetCount
--------  -----------
1000          4
1000          4
1000          4
1000          4
3000          3
3000          3
3000          3

つまり、4は4つの1000があるため、3は3つの3000があるためです。行ごとにそのsheetIDの合計カウントを繰り返したいのですが、繰り返しているのですが、それを提供したいと思います。

更新、これが返信ごとに行ったことですが、以前にそのパーティション数を追加しなかった数に比べて、結果が多すぎます。

   select MainTable.sheetID,
           COUNT(SomeTable.sheetID)OVER(PARTITION BY SomeTable.sheetID) AS TotalSheetCount
           table2.SomeField1,
           table2.SomeField1
    from MainTable
        join (select distinct Sales.SalesKey from SomeLongTableName_Sales) sales on sales.SheetKey = MainTable.sheetKey
        left outer join Site on MainTable.SiteKey = Site.SiteKey
        join Calendar on sales.Date >= Calendar.StartDate
             and sales.Date < Calendar.EndDate
        group by SomeTable.sheetID

結合などは私の実際のクエリに対してより現実的ですが、実際のフィールド名とテーブル名を非表示にするためにこの投稿用にフォーマットされています。

4

3 に答える 3

1

あなたはおそらく次のものを使いたいでしょうGROUP BY

SELECT sheetID,  COUNT(sheetID) AS TotalsheetCount
FROM dbo.SomeTable
GROUP BY sheetID

行ごとにそのシートIDの合計数を繰り返したいのですが、繰り返していますが、それを提供したいです

少なくとも SQL-Server 2005 を使用している場合は、COUNT+ OVER-clauseで CTE を使用できます。それ以外の場合は、サブクエリを使用します。

WITH CTE AS
(
   SELECT sheetID,  
      COUNT(sheetID)OVER(PARTITION BY sheetID) AS TotalsheetCount
   FROM SomeTable
)
SELECT sheetID, TotalsheetCount FROM CTE
于 2012-09-26T14:49:34.530 に答える
1

サブクエリで句を使用してGROUP BY、カウントを選択します。

SELECT sheetID,
       count(sheetID) as TotalsheetCount
FROM SomeTable
GROUP BY sheetID

これにより、クエリ全体が次のようになります。

SELECT t.sheetID,
       counts.TotalsheetCount
FROM SomeTable t,
    (SELECT sheetID, count(sheetID) as TotalsheetCount FROM SomeTable GROUP BY sheetID) counts
WHERE t.sheetID = counts.sheetID
于 2012-09-26T14:49:15.847 に答える
0

group-by 式が必要なようです:

select sheetID,
       count(*) as TotalsheetCount
from SomeTable
group by sheetID

あれですか?

DC

于 2012-09-26T14:54:54.720 に答える