プログラミングでアイデアを具現化したい

あらゆるものを具現化するためにプログラミングを始めました。主にC#

コード修正

tos5511.hatenablog.com
この記事で書いた冗長なコード。

declare @日時 varchar(20)
set @日時 = '201603'
select SPTable.通貨名,SPTable.時間,AVG(SPTable.SP)
from
(
	select
		通貨名
		,([終値(ASK)]-[終値(BID)]) as SP
		,case
			when convert(varchar(8),[日時],108) >= '06:00:00' and convert(varchar(8),[日時],108) < '07:00:00' then '06'
			when convert(varchar(8),[日時],108) >= '07:00:00' and convert(varchar(8),[日時],108) < '08:00:00' then '07'
			when convert(varchar(8),[日時],108) >= '08:00:00' and convert(varchar(8),[日時],108) < '09:00:00' then '08'
			when convert(varchar(8),[日時],108) >= '09:00:00' and convert(varchar(8),[日時],108) < '10:00:00' then '09'
			when convert(varchar(8),[日時],108) >= '10:00:00' and convert(varchar(8),[日時],108) < '11:00:00' then '10'
			when convert(varchar(8),[日時],108) >= '11:00:00' and convert(varchar(8),[日時],108) < '12:00:00' then '11'
			when convert(varchar(8),[日時],108) >= '12:00:00' and convert(varchar(8),[日時],108) < '13:00:00' then '12'
			when convert(varchar(8),[日時],108) >= '13:00:00' and convert(varchar(8),[日時],108) < '14:00:00' then '13'
			when convert(varchar(8),[日時],108) >= '14:00:00' and convert(varchar(8),[日時],108) < '15:00:00' then '14'
			when convert(varchar(8),[日時],108) >= '15:00:00' and convert(varchar(8),[日時],108) < '16:00:00' then '15'
			when convert(varchar(8),[日時],108) >= '16:00:00' and convert(varchar(8),[日時],108) < '17:00:00' then '16'
			when convert(varchar(8),[日時],108) >= '17:00:00' and convert(varchar(8),[日時],108) < '18:00:00' then '17'
			when convert(varchar(8),[日時],108) >= '18:00:00' and convert(varchar(8),[日時],108) < '19:00:00' then '18'
			when convert(varchar(8),[日時],108) >= '19:00:00' and convert(varchar(8),[日時],108) < '20:00:00' then '19'
			when convert(varchar(8),[日時],108) >= '20:00:00' and convert(varchar(8),[日時],108) < '21:00:00' then '20'
			when convert(varchar(8),[日時],108) >= '21:00:00' and convert(varchar(8),[日時],108) < '22:00:00' then '21'
			when convert(varchar(8),[日時],108) >= '22:00:00' and convert(varchar(8),[日時],108) < '23:00:00' then '22'
			when convert(varchar(8),[日時],108) >= '23:00:00' and convert(varchar(8),[日時],108) <= '23:59:59' then '23'
			when convert(varchar(8),[日時],108) >= '00:00:00' and convert(varchar(8),[日時],108) < '01:00:00' then '00'
			when convert(varchar(8),[日時],108) >= '01:00:00' and convert(varchar(8),[日時],108) < '02:00:00' then '01'
			when convert(varchar(8),[日時],108) >= '02:00:00' and convert(varchar(8),[日時],108) < '03:00:00' then '02'
			when convert(varchar(8),[日時],108) >= '03:00:00' and convert(varchar(8),[日時],108) < '04:00:00' then '03'
			when convert(varchar(8),[日時],108) >= '04:00:00' and convert(varchar(8),[日時],108) < '05:00:00' then '04'
			when convert(varchar(8),[日時],108) >= '05:00:00' and convert(varchar(8),[日時],108) < '06:00:00' then '05'
		end as 時間
	FROM [ClickNeoPrice].[dbo].[ClickPrice$]
	where LEFT(convert(varchar(20),[日時],112),len(@日時))=@日時
	and 通貨名 in ('USDJPY','USDJPYEX')
)SPTable
group by SPTable.通貨名,SPTable.時間


下記コードで書けましたね。

declare @日時 varchar(20)
set @日時 = '201603'
select SPTable.通貨名,SPTable.時間,AVG(SPTable.SP)
from
(
	select
		通貨名
		,([終値(ASK)]-[終値(BID)]) as SP
		,Left(convert(varchar(8),日時,108),2)時間
	FROM [ClickNeoPrice].[dbo].[ClickPrice$]
	where LEFT(convert(varchar(20),[日時],112),len(@日時))=@日時
	and 通貨名 in ('USDJPY','USDJPYEX')
)SPTable
group by SPTable.通貨名,SPTable.時間

今日通勤中にふと気付いた、やはり寝ないと人間効率的ではないな。
どや顔でコードアップしてた自分が恥ずかしいw