0

これは私の最初の投稿です。私は自分の問題の解決策を見つけようとしたので、みんなに助けを求めたかったのです。

私は現在このデータを持っています

Date                    Status   
----------------------- -------------
2013-01-02 08:49:31.000 A
2013-01-02 18:03:29.000 B
2013-01-03 08:54:59.000 A
2013-01-03 18:04:43.000 B
2013-01-04 08:53:26.000 A
2013-01-04 18:08:43.000 B

このような出力が欲しかった

Date                     A              B   
----------------------- ------------    ------------
2013-01-02 00:00:00.000 08:49:31.000    18:03:29.000
2013-01-03 00:00:00.000 08:54:59.000    18:04:43.000
2013-01-04 00:00:00.000 08:53:26.000    18:08:43.000

私の現在の出力はこれです

Date                    A               B   
----------------------  ------------    ------------------
2013-01-02 00:00:00.000 08:49:31.000    NULL
2013-01-02 00:00:00.000 NULL            18:03:29.000
2013-01-03 00:00:00.000 08:54:59.000    NULL
2013-01-03 00:00:00.000 NULL            18:04:43.000
2013-01-04 00:00:00.000 08:53:26.000    NULL
2013-01-04 00:00:00.000 NULL            18:08:43.000

以前に行から列へのクエリを実行しましたが、データはSUMにできるため、列として作成するのは簡単でしたが、これには同じフィールドに日付と時刻が含まれています。

TIAさん、よろしくお願いします。

4

2 に答える 2

1

これを試して

SELECT DATE_Field, 
MAX(CASE STATUS WHEN 'A' THEN Date_Time END) A,
MAX(CASE STATUS WHEN 'B' THEN Date_Time END) B
FROM 
(
SELECT CONVERT(Date,DateField,101) Date_Field, 
CONVERT(Time,DateField) Date_Time, Status
FROM YourTable
) v
GROUP BY DATE_Field
于 2013-02-18T03:49:40.360 に答える
0

これを試してみてください。時間を変換するのではなく、部分文字列が必要になる場合があります。その変換が正しく機能するかどうかはわかりません...

select convert(varchar(10),isnull(a.Date,b.Date),101),
   convert(time,a.Date) A,
   convert(time,b.Date) B
from table a
inner join table b 
on convert(varchar(10),a.Date,101) = convert(varchar(10),b.Date,101)
where a.Status = 'A'
and b.Status = 'B'
于 2013-02-18T03:56:31.543 に答える