1

以下の記録があります。

Id    Date          MondayMorning  MondayEvening  TuesdayMorning, and so on
1   2012-01-01          2               3   
2   2012-01-01          2               2 

mondaymorning と mondayevening の状態が同じではないため、レコード 1 を 2 つのレコードに分割します。状態が同じ場合は、何もしません。

私が期待する結果:

Id    Date          MondayMorning  MondayEvening  TuesdayMorning
1   2012-01-01          2               NULL          2
1   2012-01-01          NULL            3             2
2   2012-01-01          2               2 

他の日も異なる場合がありますのでご注意ください。

これどうやってするの?

4

4 に答える 4

4

必要な出力を完全には理解していませんが、次のスクリプトは、テーブル内のすべてのレコードと、MondayMorning と MondayEvening が一致しないすべてのレコードを提供します。

SELECT * FROM table
UNION ALL
SELECT * FROM table WHERE table.MondayMorning <> table.MondayEvening

@Ahmetこれを試して、列にNULLを取得してください

SELECT id
    ,date
    ,MondayMorning
    ,(CASE WHEN table.MondayEvening <> table.MondayMorning THEN NULL ELSE MondayEvening END) AS MondayEvening
    ,TuesdayMorning
    ,(CASE WHEN table.TuesdayEvening <> table.TuesdayMorning THEN NULL ELSE TuesdayEvening END) AS TuesdayEvening
FROM table 

UNION ALL 

SELECT id
    ,date
    ,NULL AS MondayMorning
    ,MondayEvening
    ,NULL AS TuesdayMorning
    ,TuesdayEvening
FROM table
WHERE table.MondayMorning <> table.MondayEvening
OR table.TuesdayMorning <> table.TuesdayEvening
于 2012-11-02T08:48:49.503 に答える
-2
Select * from empmas where compcd=1 and empcd =0001 connect by level <=2;

従業員 0001 の詳細を取得し、その取得レコードの 2 つのレコードを作成しました。

于 2016-12-22T03:53:38.547 に答える