1

これがテーブルの例です。sql-server を使用して、以下の各従業員の最大値 (ログイン日) を取得しようとしていますが、データベースの「ログイン日」はデータ型 int です。簡単に選択できます。つまり、

select employee,title,max(login_date) from employee group by employee,title

部分文字列を使用して、login_date("YYYYMM") を日付変数に変換できます。

set @var_year=select (substring((select login_date),1,4))

年を格納する変数と月を格納する変数を使用していますが、それをメインの select ステートメントに渡すにはどうすればよいですか?

Employee  Title         Login_Date              
-----------------------------------------
Mike      VP            201301
Amy       CEO           201201                    
Joe       Office Mgr    201105
Andy      Admin Asst    201308
Joe       Office Mgr    201205
Andy      Admin Asst    201309
Joe       Office Mgr    201205
Andy      Admin Asst    201309
4

1 に答える 1

1

あなたがそれを行うことができるいくつかの方法。1つは

Select m.employee,m.title,
convert(int,substring(thisisNOTadate,1,4)) as [Year],
convert(int,substring(thisisNOTadate,5,2)) as [Month]
From 
(select employee,title,max(login_date) as ThisisNOTadate 
 from employee group by employee,title
) m

個人的には、YYYYMM login_date という形式の文字列を数回呼び出したことがある人を平手打ちした後、login_date が実際には のような日付になるようにテーブルを作り直し、日付Convert(DateTime,Convert(VarChar(6), Login_date) + '01')の一部を必要とするものはすべてその標準の日付関数を使用できるようにしました。

そのため、以前のReBand氏へのコメントに基づいて

select employee,title,
       max(convert(datetime,Convert(varchar(6),login_date) + '01')) as arealdate
From employee group by employee,title

別のものになります。

于 2013-09-26T21:48:09.537 に答える