Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SQL PIVOT Table

Можете да направите нещо подобно:

SQL Fiddle

Настройка на схемата на Oracle 11g R2 :

СЪЗРАЙТЕ ТАБЛИЦА tbl ( "mod", "floor", "Remaining Counts", CountType) КАТО ИЗБЕРЕТЕ 'dz-P-1A', 1, 37, 'CycleCount' ОТ DUALUNION ALL SELECT 'dz-P -1D', 1, 321, 'CycleCount' ОТ DUALUNION ALL ИЗБЕРЕТЕ 'dz-P-1T', 1, 16, 'CycleCount' ОТ DUALUNION ALL SELECT 'dz-P-2A', 2, 25, 'CycleCount' ОТ DUALUNION ALL SELECT 'dz-R-1T', 1, 3318, 'CycleCount' ОТ DUALUNION ALL SELECT 'dz-P-1A', 1, 6351, 'SimpleBinCount' ОТ DUALUNION ALL SELECT 'dz-P-1D' , 121, 'SimpleBinCount' ОТ DUALUNION ALL SELECT 'dz-P-2A', 2, 12638, 'SimpleBinCount' ОТ DUALUNION ALL SELECT 'dz-R-1F', 1, 68, 'SimpleBinCount' SELECT FROMz -R-1O', 1, 47, 'SimpleBinCount' ОТ DUALUNION ALL SELECT 'dz-R-1T', 1, 2051, 'SimpleBinCount' ОТ DUAL; 

Запитване 1 :

PIVOT с помощта на SUM( CASE ... ) изявления:

ИЗБЕРЕТЕ CountType, SUM( CASE "mod" WHEN 'dz-P-1A' THEN "Remaining Counts" END ) КАТО "P-1-A", SUM( CASE "mod" WHEN 'dz-P -2A' ТОГАВА "Оставащи брои" END ) КАТО "P-2-A", SUM( СЛУЧАЙ "mod" КОГАТО 'dz-R-1T' СЛЕД "Оставащи брои" END ) КАТО "R-1-T", SUM ( СЛУЧАЙ "mod" КОГАТО 'dz-R-1F' СЛЕД "Оставащи брои" КРАЙ ) КАТО "R-1-F", SUM( СЛУЧАЙ "mod" КОГАТО 'dz-R-1O' СЛЕД "Оставащи брои" END ) КАТО "R-1-O", SUM( CASE "mod" WHEN 'dz-P-1B' THEN "Remaining Counts" END ) КАТО "P-1-B", SUM( CASE "mod" WHEN 'dz-P -1D' THEN "Remaining Counts" END ) КАТО "P-1-D"FROM tblGROUP BY CountType 

Резултати :

<предварителен код>| COUNTTYPE | P-1-A | P-2-A | R-1-T | R-1-F | R-1-O | P-1-B | P-1-D ||----------------|-------|-------|-------|-- ------|--------|--------|-------|| SimpleBinCount | 6351 | 12638 | 2051 | 68 | 47 | (нула) | 121 || CycleCount | 37 | 25 | 3318 | (нула) | (нула) | (нула) | 321 |

Запитване 2 :

Използване на PIVOT транспониране:

SELECT * FROM ( SELECT SUBSTR( "mod", 4 ) AS "mod", "Remaining Counts", CountType FROM tbl t)PIVOT( SUM("Remaining Counts") FOR "mod" IN ( ' P-1A“, „P-2A“, „R-1T“, „R-1F“, „R-1O“, „P-1B“, „P-1D“ )) 

Резултати :

<предварителен код>| COUNTTYPE | „P-1A“ | „P-2A“ | „R-1T“ | „R-1F“ | „R-1O“ | „P-1B“ | 'P-1D' ||----------------|--------|--------|-------- |-------|--------|-------|-------|| SimpleBinCount | 6351 | 12638 | 2051 | 68 | 47 | (нула) | 121 || CycleCount | 37 | 25 | 3318 | (нула) | (нула) | (нула) | 321 |

Редактиране – Обвиване на вашата заявка:

С qry AS ( изберете drop_zone_id като "Mod", bin_level като "Floor", icqa_process_properties.icqa_process_property_value като "Count Type", count(*) като "Remaining Counts", concat(drop_zonevalties_id, icqa_process_process_iq_process_process_process. като "Unique", to_char(sysdate,'hh:mi:ssam') като "Time Last Updated", to_char(sysdate, 'MM-DD-YYYY') като "Date Last Updated" от icqa_process_locations вътрешно присъединяване icqa_processes на icqa_processes. icqa_process_id =icqa_process_locations.icqa_process_id inner join icqa_process_properties on icqa_processes.icqa_process_id =icqa_process_properties.icqa_process_id inner join bins on bins.bin_id =icqa_process_locations.scannable_id where icqa_count_attempt_id is NULL and icqa_processes.process_status =('Active') and drop_zone_id not like 'dz-R- 1B' и drop_zone_id не като 'dz-P-1Z' и drop_zone_id не като 'dz-P-EACH_1' и icqa_process_properties.icqa_process_property_value в ('CycleCount', 'SimpleBinCount') група от icqa_process_properties.icqa_process_property_value, bin_level, drop_zone_id подреждане по icqa_process_properties.icqa_process_property_value, drop_process_property_value, drop_zone_id_value, drop_zone_id'in THEzCount-zone_id'in'DOP "CROCK-ZONE-ID" SUMA "WZHP "SdUMA "WZHP "SdUMA" " END ) КАТО "P-1-A", SUM( CASE "Mod" WHEN 'dz-P-2A' THEN "Remaining Counts" END ) КАТО "P-2-A", SUM( CASE "Mod" WHEN ' dz-R-1T' СЛЕД "Оставащи брои" END ) КАТО "R-1-T", SUM( СЛУЧАЙ "Mod" КОГАТО 'dz-R-1F' СЛЕД "Оставащи брои" END ) КАТО "R-1-F ", SUM( CASE "Mod" WHEN 'dz-R-1O' THEN "Remaining Counts" END ) КАТО "R-1-O", SUM( CASE "Mod" WHEN 'dz-P-1B' THEN "Remaining Counts " END ) КАТО "P-1-B", SUM( CASE "Mod" WHEN 'dz-P-1D' THEN "Ostain Counts" END ) КАТО "P-1-D"FROM qryGROUP BY "Count Type"; 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server еквивалент на функцията WM_CONCAT

  2. Oracle (11.2.0.1) :Как да идентифицираме реда, който в момента се актуализира от оператора UPDATE

  3. Преобразувайте минутите във формат HH24:MI

  4. Ключова дума „CONTINUE“ в Oracle 10g PL/SQL

  5. Как да вмъкнете дълъг низ в CLOB тип данни в Oracle