1

SQLを使用して、会社ごとにグループ化された日付に値を与えるにはどうすればよいですか?

現在のテーブル:

Date            Company          Employees

2012-04-28      Apple, Inc.      7543
2012-04-27      Apple, Inc.      7510
2012-04-26      Apple, Inc.      7484

2012-04-28      Google, Inc.     11303
2012-04-27      Google, Inc.     11300
2012-04-26      Google, Inc.     11280
2012-04-25      Google, Inc.     11278
2012-04-24      Google, Inc.     11254

希望するテーブル:

Date            company_day      Company          Employees

2012-04-28      3                Apple, Inc.      7543
2012-04-27      2                Apple, Inc.      7510
2012-04-26      1                Apple, Inc.      7484

2012-04-28      5                Google, Inc.     11303
2012-04-27      4                Google, Inc.     11300
2012-04-26      3                Google, Inc.     11280
2012-04-25      2                Google, Inc.     11278
2012-04-24      1                Google, Inc.     11254

company_dayの値は、各会社の最も早い日付から始まります。company_dayは会社固有です。

4

1 に答える 1

2

MINまず、各社の日付を取得します。

次にJOIN、そのクエリの結果を表示して、そのクエリと[日付]列の違いを表示することができます。

SELECT 
    MyTable.[Date]
    ,DATEDIFF(MyTable.[Date], MinTable.[MinDate]) + 1 AS Company_Day
    ,MyTable.[Company]
    ,MyTable.[Employees]
FROM
    MyTable
JOIN
    (
    SELECT 
        MIN(b.[Date]) AS MinDate
        , b.[Company] 
    FROM 
       MyTable b 
    GROUP BY 
        b.[Company]
    ) AS MinTable
        ON MinTable.[Company] = MyTable.[Company]

そんな感じ。このコードはテストされていませんが、近いはずです。
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_datediff
http://www.w3schools.com/sql/func_datediff_mysql.asp

于 2012-05-03T21:47:05.307 に答える