Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

kwartalna filtracja wyników w sql

Aby połączyć wartości z wielu wierszy, musisz zaimplementować FOR XML PATH, podobnie jak:

;with cte as
(
  select t.cust_id,
    sum(target) target,
    d.qtr,
    t.year,
    t.fiscal_id
  from yourtable t
  inner join
  (
    select 4 mth, 'Q1' qtr union all
    select 5 mth, 'Q1' qtr union all
    select 6 mth, 'Q1' qtr union all
    select 7 mth, 'Q2' qtr union all
    select 8 mth, 'Q2' qtr union all
    select 9 mth, 'Q2' 
  ) d
    on t.month = d.mth
  group by t.cust_id, d.qtr, t.year, t.fiscal_id
) 
select distinct cust_id,
  STUFF(
         (SELECT ' / ' + cast(c2.target as varchar(10))
          FROM cte c2
          where c1.cust_id = c1.cust_id
            and c1.year = c2.year
            and c1.fiscal_id = c2.fiscal_id
          FOR XML PATH (''))
          , 1, 2, '')  AS target,
  STUFF(
         (SELECT ' / ' + c2.qtr
          FROM cte c2
          where c1.cust_id = c1.cust_id
            and c1.year = c2.year
            and c1.fiscal_id = c2.fiscal_id
          FOR XML PATH (''))
          , 1, 2, '')  AS qtr,
  year,
  fiscal_id
from cte c1;

Zobacz Skrzypce SQL z wersją demonstracyjną




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaimportować dane z .csv w SQL Server za pomocą PowerShell?

  2. Warunki NULL w SQL Server

  3. SQL Server:Czy można wstawiać do dwóch tabel jednocześnie?

  4. Typ danych SQL Server BIT — ostateczny przewodnik

  5. Nie można zaimportować danych z programu Excel 2003 do bazy danych za pomocą funkcji openrowset