まず最初に、私はMySQLの初心者です。すでに別の「用語」で答えられているものを尋ねると、私は完全にお詫び申し上げます。私は1週間以上これを解決する方法を模索してきましたが、適切なキーワードを使用していない可能性が高いため、私はこれを思いつきませんでした。私とこの意味では自分の無知でご負担ください:)MySQLテーブルからのクエリ - 同じフィールドを2回選択する
を、私は、次のフィールドを持つテーブルがある:
ID int(11) NO PRI auto_increment
Building int(11) YES MUL
CounterNo int(11) YES MUL
ReadingDate datetime YES
StartMeter int(11) YES
EndMeter int(11) YES
CostKw decimal(10,6) YES
Multiplier smallint(3) YES
は、私は比較の折れ線グラフを移入するために使用するクエリを、作りたいです、それは次のように返します。Cons2は消費になりながら、月の名前は、その後、X軸を移入するために使用されるだろう、とCons1は昨年の各月の各建物のための消費となり
Building | Cons1 | Cons2 | Month
1 1year ybefore Month
毎年各建物の毎月の予定e。私はすでに遊んでてきた、これまでのところ、私は、次のいずれかに得ている
:
SELECT Building,
CASE
WHEN ReadingDate >= DATE_SUB(NOW(), INTERVAL 1 YEAR)
THEN (EndMeter - StartMeter)
ELSE NULL
END
AS 'Cons1',
CASE
WHEN ReadingDate BETWEEN DATE_SUB(NOW(), INTERVAL 2 Year) AND DATE_SUB(NOW(), INTERVAL 1 Year)
THEN (EndMeter - StartMeter)
ELSE NULL
END
AS 'Cons2',
CONCAT(
MONTHNAME (
tblElectricReadings.ReadingDate
)
) AS MonthRecorded
FROM tblElectricReadings
WHERE ReadingDate >= DATE_SUB(NOW(), INTERVAL 2 YEAR)
ORDER BY ReadingDate
これは私が望む結果が得られますが、それは申し訳ありませんが、再び「統合」(としません。ここで間違った単語を使用している場合)Cons1とCons2を一緒に使用するのではなく、いずれかのフィールドにnull値を入れて、必要なレコードを2倍にします。基本的には、クエリは正常に動作しますが、それは私が望む結果ではありません。私はCons1とCons2の両方に、毎月の関連消費量を入力したいので、折れ線グラフ(Con1とCons2の2行、1行と2行)を配置することができます。
私は十分にはっきりしていないと願っています。私に許してください、あなたにさらなる情報が必要かどうか教えてください。
ご協力いただきありがとうございます。
編集:Paulに返信する - 各建物の月ごとに1つのエントリしかないので、問題はありません。しかし、気づいてくれてありがとう!また、xQbertに100万に感謝 - あなたの答えはまさに私が探していたものです:)あなたの時間の男のためにありがとう。
でmaxとgroupを使用します。同じように:http://stackoverflow.com/questions/3263126/merging-two-rows-to-one-while-replacing-null-values – xQbert
1ヶ月以内に複数のエントリがある場合、どちらを取るか? –