2016-11-15 8 views
0

私はしばらくこの作業を続けており、専門家に尋ねると思いました。私はクエリの結果を1つの行に戻すことができるようにしたいが、私の人生ではこれを理解することはできない。私のデータベースのフィールドには、2つの控除コード2902と2903がそれぞれ異なる金額になります。すべてのリターンに2903コードが含まれるわけではありませんが、ほとんどのコードに2902コードが含まれます。すべてのデータが従業員にとって一列に並ぶように、私はどのようにリターンを取り戻すのですか?私が探しています 出力は以下の通りSqlすべてのデータを1つの行に戻すクエリ

NameLast、NameFirst、DeductionCode2902、deductionamt2902、deductioncode2903、代わりに以下のような複数の行のdeductionamt2903

NameLast、Namefirst、Deductioncode2902、DeductionAmt2902

NameLast、NameFirst、DeductionAmt2903

データベースのデータ形式:

enter image description here

Select 
pr_employ.namelast, 
pr_employ.namefirst, 
pr_employ_hist.deductioncode 
pr_employ_hist.deductionamt 
from pr_employ, pr_employ_hist 
Where pr_employ.namelast = pr_employhist.namelast and 
pr_employ_hist.deductioncode = ‘2902’ or pr_employ_hist.deductioncode =’2903’ 
Group by 
pr_employ.namelast, 
pr_employ.namefirst, 
pr_employ_hist.deductioncode 
pr_employ_hist.deductionamt 
+2

rdbmsとは何ですか? Googleは '' PIVOT '' –

+2

GROUP BYについて集計関数は意味をなしません。 – jarlh

+2

次回のポストテーブルデータをテキストとしてコピー&ペーストできません。 \t [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [**スタート**] http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を向上させ、より良い回答を得る方法を学ぶことができます。 –

答えて

1

条件SUM()

DEMO

SELECT `namelast`, `namefirst`, 
     SUM(CASE WHEN `DeductionCode` = 2902 THEN `DeductionAmt` ELSE 0 END) as amt2902, 
     SUM(CASE WHEN `DeductionCode` = 2903 THEN `DeductionAmt` ELSE 0 END) as amt2903 
FROM Table1 
GROUP BY `namelast`, `namefirst` 

OUTPUTを使用してみてください

enter image description here

関連する問題