这是我的第一篇文章,如果格式不正确,请多多指教。
我正在为饼图和每个行创建一个数据集,我需要从颜色表中添加一个颜色(COL_COL)和颜色突出显示(COL_HIG),如下所示。
CREATE TABLE [dbo].[T_COL](
[COL_SEQ] [int] IDENTITY(1,1) NOT NULL,
[COL_COL] [nvarchar](20) NULL,
[COL_HIG] [nvarchar](20) NULL,
[COL_NAM] [nvarchar](50) NULL,
[COL_DEL] [bit] NOT NULL,
)
INSERT INTO [dbo].[T_COL] ([COL_COL]
,[COL_HIG]
,[COL_NAM]
,[COL_DEL])
VALUES
('#F7464A', '#FF5A5E','Red', 0),
('#46BFBD', '#5AD3D1','Green', 0),
('#FDB45C', '#FFC870','Yellow', 0),
('#949FB1', '#A8B3C5','Grey', 0),
('#4D5360', '#616774','Dark Grey', 0)
从审计表生成我的数据的SQL是...
select count(*) as 'Visits',
datename(mm, AUD_DAT) as 'Month',
'Unique Visits by Month' as 'Title',
datepart(mm, AUD_DAT) as 'MonthNo',
ROW_NUMBER() OVER (ORDER BY datename(mm, AUD_DAT)) AS 'rownum',
null as 'colour',
null as 'ColHightlight'
into #temp
from dbo.T_AUD
where AUD_TYP_SEQ = 3 and datepart(year, AUD_DAT) = @year
group by datename(mm, AUD_DAT),datepart(mm, AUD_DAT)
order by datepart(mm, AUD_DAT)
上面的查询返回8行,并且颜色表中有五种颜色。我试图到达第1-5行包含颜色1-5的位置,然后第6行将包含颜色1,第7行包含颜色2,依此类推。与其对颜色的数量进行硬编码,不如使用颜色表的计数,因为当将颜色添加到该表时,计数将发生变化。
我尝试使用row_number函数,但这只是为每行增加一个数字,我不确定当它到达颜色表的计数时是否可以将其重置为1。
你能帮我实现这个吗?任何帮助表示赞赏。缺口。
做这样的事情。ctecolors
将用标记行rn(0, 1, 2, 3, 4)
。teaud
将标记rn(0, 1, 2, 3, 4, 0, 1....)
。然后简单地加入rn
。
;with ctecolors as
(select *, -1+row_number() over(order by (select 1)) rn from [dbo].[T_COL]),
cteaud as
( select count(*) as 'Visits',
datename(mm, AUD_DAT) as 'Month',
'Unique Visits by Month' as 'Title',
datepart(mm, AUD_DAT) as 'MonthNo',
(-1+ROW_NUMBER() OVER (ORDER BY datename(mm, AUD_DAT))) % 5 AS rn
from dbo.T_AUD
where AUD_TYP_SEQ = 3 and datepart(year, AUD_DAT) = @year
group by datename(mm, AUD_DAT),datepart(mm, AUD_DAT))
Select Visits,Month,Title,MonthNo, ctecolors.* into #temp
from ctecolors cc
join cteaud ca on cc.rn = ca.rn
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句