2

私はSQlの初心者です。これが私の要件です。

TableA 
operation route measurement
A         No    200
A         Yes   300
B         No    400
B         Yes   500

結果としてこれが欲しい

Operation MeasurementNo  MeasurementYes  MeasureDifference
A         200            300             100
B         400            500             100

そのため、操作フィールドをグループ化する必要があります。同時に、操作の測定値の 2 つの値を 1 つの行にマージする必要があります。

The MeasureDifference = MeasurementYes - MeasurementNo.

SQLで達成するのもそれほど難しくないように見えますが、私は初心者です。どんな助けでも大歓迎です。

4

2 に答える 2

3

または、グループ化と条件付き集計を使用します。

SELECT
  operation,
  SUM(CASE route WHEN 'No'  THEN measurement END) AS MeasurementNo,
  SUM(CASE route WHEN 'Yes' THEN measurement END) AS MeasurementYes,
  SUM(CASE route WHEN 'Yes' THEN measurement END)
  - SUM(CASE route WHEN 'No'  THEN measurement END) AS MeasurementDifference
FROM atable t
GROUP BY
  operation
于 2012-06-03T00:08:23.697 に答える
2

結合を使用します:

SELECT
    MNo.operation AS Operation,
    MNo.measurement AS MeasurementNo,
    MYes.measurement AS MeasurementYes,
    MYes.measurement - MNo.measurement AS MeasureDifference
FROM TableA AS MNo
JOIN TableA AS MYes
ON MNo.operation = MYes.operation
AND MNo.route = 'No'
WHERE MYes.route = 'Yes'
于 2012-06-03T00:03:38.223 に答える