以下の記録があります。
Id Date MondayMorning MondayEvening TuesdayMorning TuesdayEvening and so on
1 2012-01-01 2 3 2 2
2 2012-01-02 2 2 2 2
mondaymorning と mondayevening の状態が同じではないため、レコード 1 を 2 つのレコードに分割します。状態が同じ場合は、何もしません。
私が期待する結果:
Id Date MondayMorning MondayEvening TuesdayMorning TuesdayEvening
1 2012-01-01 2 NULL 2 2
1 2012-01-01 NULL 3 NULL NULL
2 2012-01-02 2 2 2 2
他の日も異なる場合がありますのでご注意ください。
私はすでにクエリを持っていますが、いくつかの変更が必要です。SQL Fiddleのクエリを参照してください 。ここに表示される出力は、問題が発生した場合です。TuesdayEvening と MondayEvening については、2 を期待しています。
SQL Fiddle に関する情報は次のとおりです。
Declare @t Table(Id int identity,[Date] Datetime,MondayMorning Int,MondayEvening Int,TuesdayMorning Int,TuesdayEvening Int)
Insert Into @t Select '2012-01-01',0,2,0,2
SELECT id
,date
,MondayMorning
,(CASE WHEN MondayEvening <> MondayMorning THEN NULL ELSE MondayEvening END) AS MondayEvening
,TuesdayMorning
,(CASE WHEN TuesdayEvening <> TuesdayMorning THEN NULL ELSE TuesdayEvening END) AS TuesdayEvening
FROM @t
UNION ALL
SELECT id
,date
,NULL AS MondayMorning
,(CASE WHEN MondayEvening = MondayMorning THEN NULL ELSE MondayEvening END) AS MondayEvening
,NULL AS TuesdayMorning
,(CASE WHEN TuesdayEvening = TuesdayMorning THEN NULL ELSE TuesdayEvening END) AS TuesdayEvening
FROM @t
WHERE --MondayMorning <> MondayEvening
--OR TuesdayMorning <> TuesdayEvening
MondayMorning <> MondayEvening
AND (MondayMorning != 0 and MondayEvening != 0)
OR TuesdayMorning <> TuesdayEvening
AND (TuesdayEvening != 0 and TuesdayMorning != 0)