特定の月の日付をグリッドビューの列ヘッダーに表示したい
対応する値が下に表示されます
選択する
明確
カードノ、名前、
min(convert(char(5), time , 108)) 以上 (cardno による分割, CONVERT(varchar(20), time,
102) ) +' | '+max(convert(char(5), time , 108)) over (カード番号による分割,
CONVERT(varchar(20), time, 102) ) [出る/入る]
FROM イベント
以下は上記のクエリの出力です
カードの名前 出入り 出入り 100 バイジュ 09:30 | 18:30 101 キラン 09:55 | 18:45
私はこのような出力が欲しい
cardno name 2013-07-01 2013-07-12 .........................................2013-07 -31
100 バイジュ 09:30|18:30 null
101 キラン 09:35|18:45 null
月全体の日をグリッドビュー ヘッダーに表示する必要があることを意味します。値がない場合は null にする必要があります
この例を試しましたが、エラーが表示されました
@dte を datetime ='2013-07-01' として宣言
@StDt を Datetime = DATEADD(dd,-(DAY(GETDATE())-1),@dte) として宣言します。
@EnDt を datetime = DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@dte)+1,0)) として宣言します。
@Cnt を int = datepart(dd,@EnDt) として宣言します。
@inc を int = 0 として宣言する
テーブル #temp (Month_date datetime) を作成します
while @inc < @cnt
始める
#temp に挿入
select DATEADD(dd, @inc, DATEADD(dd,-(DAY(@dte)-1),@dte))
set @inc = @inc + 1 end DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME([date]) from events FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1, '')
SET @Query='SELECT distinct cardno,name,'+ @cols+' from ( select t.Month_date,e.cardno,e.date from #temp t right outer join events on t.Month_date=e.date ) x pivot ( min(convert(char(5), time , 108)) over (cardno による分割, CONVERT(varchar(20), time, 102) ) +' | '+max(convert(char(5), time , 108) ) 以上 (cardno による分割, CONVERT(varchar(20), time, 102)
for date in (' + @cols + ')
) p Month_date 順'
exec(@クエリ)
テーブル #temp を削除
これはエラーメッセージです
メッセージ 207、レベル 16、状態 1、行 19
列名「日付」が無効です。
メッセージ 402、レベル 16、状態 1、行 36
データ型 nvarchar(max) と varchar は '|' で互換性がありません オペレーター。
これを解決する方法
よろしく
梅樹