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

заявка за разделяне на данни

@Ани; в Hive няма йерархична заявка за създаване на четири четвърти (1,2,3,4), така че създавам малка таблица за нея. След това получавам всички Patient_id, година и месец, които съществуват в таблицата ims_patient_activity_diagnosis. Накрая направих правилно съединяване на всички възможни идентификационни номера на пациента, година и тримесечия (1,2,3,4); Ако идентификаторът, годината или тримесечието не съществуват в правилното съединение, тогава няма активност за този идентификатор, година и тримесечие. Присвоявам активност=0 за тези редове. Вмъкнах също идентификационен номер на пациента=200, за да тествам дали има още идентификационни номера на пациента в таблицата. Надявам се това да помогне. Благодаря.

create table dbo.qtrs(month int);
insert into qtrs  values (1),(2),(3),(4);

select DISTINCT NVL(ims.id, qtr.id) as patient_id,
qtr.year as year,
qtr.month as month,
CASE WHEN ims.id > 0 THEN 1 ELSE 0 END as activity  
from sandbox_grwi.ims_patient_activity_diagnosis ims
right join (select distinct ims.id,YEAR(ims.month_dt) as year,qtrs.month from sandbox_grwi.ims_patient_activity_diagnosis ims join dbo.qtrs qtrs) qtr 
on (ims.id=qtr.id and YEAR(ims.month_dt)=qtr.year and INT((MONTH(month_dt)-1)/3)+1=qtr.month)
sort by patient_id, year, month;

Sample Result:
p_id    year    month   activity
100     2012    1       1
100     2012    2       0
100     2012    3       0
100     2012    4       0
100     2013    1       1
100     2013    2       1
100     2013    3       1
100     2013    4       0
100     2014    1       1
100     2014    2       1
100     2014    3       0
100     2014    4       1
100     2015    1       1
100     2015    2       0
100     2015    3       1
100     2015    4       1
100     2016    1       0
100     2016    2       1
100     2016    3       0
100     2016    4       1
200     2012    1       1
200     2012    2       0
200     2012    3       0
200     2012    4       0
200     2013    1       0
200     2013    2       1
200     2013    3       0
200     2013    4       0


additional sample data:
insert into sandbox_grwi.ims_patient_activity_diagnosis values
(200, '2012-03-01'), 
(200, '2013-04-01'); 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel 5 красноречив къдетоIn

  2. как да създадете db mysql с sqlalchemy

  3. Как да изградим hybrid_method, който отчита броя на записите от последните X дни?

  4. Грешка във връзката с MediaWiki DB при опит за надграждане до 1.22

  5. PHP Предупреждение:Стартиране на PHP:Не може да се зареди динамична библиотека '/usr/lib/php/20151012/msqli.so'