【问题标题】:Year and quarter wise Data SQL年度和季度数据 SQL
【发布时间】:2018-12-20 18:46:17
【问题描述】:

我需要一种方法来查询 SQL 表并以季度和年度为基础拉回数据。 听听我的数据格式 [![在此处输入图像描述][1]][1]

Expected data
[![enter image description here][2]][2]


  [1]: https://i.stack.imgur.com/gU2aO.png
  [2]: https://i.stack.imgur.com/yaY5l.png




Please help to find out year and quarter wise data in SQL as pivot

【问题讨论】:

标签: c# sql asp.net database pivot


【解决方案1】:
First i will create my table

create table radhasapna (id int identity(1,1), [Year] int, Q int, Q2 int, Q3 int, Q4 int)

insert into radhasapna ([Year] , Q , Q2 , Q3 , Q4 ) values
(2000,  200,    456,    45, 35  ),
(2000,  200,    435,    435,    545 ),
(2000,  200,    454,    43, 45  ),
(2000,  200,    45, 435,    4   ),
(2001,  300,    4,  43, 545 ),
(2001,  300,    43, 4,  56  ),
(2001,  300,    4,  4,  4   ),
(2001,  300,    43, 43, 6   ),
(2001,  300,    4,  56, 34  ),
(2002,  400,    4,  34, 43  ),
(2002,  400,    43, 45, 6   ),
(2002,  400,    4,  45, 4   ),
(2002,  400,    43, 34, 54  ),
(2002,  400,    45, 45, 6)

declare @years integer = (SELECT COUNT(DISTINCT [YEAR]) FROM radhasapna)
print @years
declare @minY nvarchar(10) = (SELECT CAST(MIN([YEAR]) as nvarchar) FROM radhasapna)

declare @sql nvarchar(max)
declare @i int = 1
set @sql = ';with cte as (
SELECT ROW_NUMBER() OVER (PARTITION BY [YEAR] ORDER BY id) as r,
         ID,        YEAR,   Q1, Q2, Q3, Q4, [From]  ,[To]
    FROM   radhaa )
SELECT '


WHILE @i <= @years
begin
    set @sql = @sql + stuff('aXX', 2,2, @i) + '.*'
    if @i < @years
    begin
        set @sql = @sql + ','
    end 
    set @i = @i + 1
end



set @sql = @sql + ' from cte a1 '

set @i = 2
WHILE @i <= @years
begin
    declare @s nvarchar(10) = stuff('aXX', 2,2, @i)
    declare @prevS nvarchar(10) = stuff('aXX',2,2,@i-1)
    set @sql = @sql + 'left outer join cte ' + @s + ' on ' + @s + '.[YEAR] = ' + @prevS + '.[YEAR] + 1 and a1.r = ' + @s + '.r '
    set @i = @i + 1
end
set @sql = @sql + 'where a1.[YEAR] = ' + @minY + ' order by a1.r'
EXEC sp_executesql @sql
print @sql

【讨论】:

    猜你喜欢
    • 2013-12-02
    • 2020-07-16
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2021-03-08
    • 2023-03-31
    相关资源
    最近更新 更多