0

特定の月の日付をグリッドビューの列ヘッダーに表示したい

対応する値が下に表示されます

選択する

明確

カードノ、名前、

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 は '|' で互換性がありません オペレーター。

これを解決する方法

よろしく

梅樹

4

0 に答える 0