2

SQLで解決する必要がある次の問題があります。

2列のテーブルがあるとしましょう:

    Date | Code
    --------
    0    | 25
    1    | 22
    2    | 23
    3    | 25
    4    | 23
    5    | 21

日付は私にとって重要なので、それらの数を数えておく必要があります。したがって、次のようなものを作成する必要があるとしましょう。

    Date | Code | Count
    --------------------
    0    | 25   |   1
    1    | 22   |   1
    2    | 23   |   1
    3    | 25   |   2
    4    | 23   |   2
    5    | 21   |   1

前もって感謝します、

PS: MSSQL 2012 で実装しています。

よろしく。

4

3 に答える 3

0

コード値の実行中のカウントが必要なようです。その場合は、次のクエリを使用して実行中のカウントを取得できます。

SELECT date,
  code, 
  (SELECT count(code)
   FROM yourtable b 
   WHERE b.date <= a.date
     and a.code = b.code) AS TotalCount
FROM yourtable a

デモで SQL Fiddle を参照してください

または、次を使用できます。

SELECT a.date,
  a.code, 
  count(a.code) AS TotalCount
FROM yourtable a
cross join yourtable b
WHERE b.date <= a.date
  and a.code = b.code
group by a.date, a.code
order by a.date;

デモで SQL Fiddle を参照してください

これは小さなテーブルでは問題なく機能しますが、大きなテーブルでは問題が発生することに注意してください。(ありがとう@AaronBertrand)

于 2013-04-04T17:09:04.267 に答える