-1

これは私のデータテーブルです。私はすべてを取得する必要がEmployee BasicSalaryあります、、、、、CodeTravelPhoneESI.PF

誰かがこれを手伝うことができますか?

year | month | EmpID | Component | Amount | Remarks
2013 | 3     | 2     | Basicsal  | 15000  | dsf
2013 | 3     | 2     | CODE      | 2      | dsf
2013 | 3     | 2     | Travel    | 0      | dsf
2013 | 3     | 2     | Phone     | 1500   | dsf
2013 | 3     | 2     | Internet  | 500    | dsf
2013 | 3     | 2     | Bus Allo  | 0      | dsf
2013 | 3     | 2     | BF        | 0      | dsf
2013 | 3     | 2     | ESI       | 0      | dsf
2013 | 3     | 2     | Medic     | -500   | dsf
2013 | 3     | 2     | Cress     | 101752 | af
2013 | 3     | 2     | Net       | 101552 | asf
etc. | ..    | ..    | ...       | ....   | ...

しかし、私はこのような出力が必要です

Year | Month | EmpID | Basicsalary | CODE | Travel | Phone | cress  | net 
2013 | 3     | 2     | 15000       | 2    | 0      | 1500  | 101752 | 101552
4

2 に答える 2

1

データベースとして SQL Server または Oracle を使用している場合は、PIVOT関数を適用して結果を取得できます。

コードは次のようになります。

select year, 
  month, 
  empid,
  Basicsal, 
  Code, 
  Travel, 
  Phone, 
  Cress, 
  Net
from
(
  select year, month, empid, component, amount
  from yourtable
) src
pivot
(
  max(amount)
  for component in (Basicsal, Code, Travel, Phone, Cress, Net)
) piv
于 2013-03-12T11:05:57.047 に答える
1

使用しているRDBMSを指定していないので、これを試してください:

SELECT 
  year,
  month,
  EmpID,
  MAX(CASE WHEN Component = 'Basicsalary' THEN Amount END) AS Basicsalary,
  MAX(CASE WHEN Component = 'Code'        THEN Amount END) AS Code,
  MAX(CASE WHEN Component = 'Travel'      THEN Amount END) AS Travel,
  MAX(CASE WHEN Component = 'Phone'       THEN Amount END) AS Phone,
  MAX(CASE WHEN Component = 'Chress'      THEN Amount END) AS Chress,
  MAX(CASE WHEN Component = 'net'         THEN Amount END) AS net,
FROM tablename
GROUP BY year, 
         month,
         EmpId;
于 2013-03-12T10:58:21.750 に答える