| Author |
Topic |
|
bluemagic74
Starting Member
15 Posts |
Posted - 2012-02-01 : 12:33:13
|
| Hi,My table structure is CREATE TABLE [dbo].[DMT050_DIAB_MED]( [ID] [int] NULL, [DRUG_CD] [tinyint] NOT NULL, [READ_TP_CD] [tinyint] NOT NULL, [SQNC_NB] [tinyint] NOT NULL, [DSG_PTS] [nvarchar](max) NOT NULL, [PLLS_CNT] [decimal](2, 1) NULL, [STRT_DT_DFC] [int] NULL, [END_DT_DFC] [int] NULL) ON [PRIMARY]GOSample data :ID,DRUG_CD,READ_TP_CD,SQNC_NB,DSG_PTS,PLLS_CNT,STRT_DT_DFC,END_DT_DFC1327,5,1,1,500/2,1,0,51327,5,5,1,500/2,1,7,111327,13,1,1,500,1,1,31421,2,1,1,30,1,1,51421,13,1,1,1000,2,56,601421,13,3,1,1000,2,0,111554,2,1,1,45,1,361,4321554,9,5,1,2.5,1,58,58So I wrote below script to pull the weekly count. But I used only STRT_DT_DFC.I need count between STRT_DT_DFC and END_DT_DFC.FOR ex: for 1 user STRT_DT_DFC = 0 and END_DT_DFC = 7 , so week 1 count is 1Need help to modify the script.DECLARE @SQL NVARCHAR(MAX), @I INT, @J INT, @WEEKDAYS INTSET @SQL = 'SELECT ' + 'ID' + ' AS ID,'SET @WEEKDAYS = 7SET @J = 0 SET @I = 0WHILE @I <= 121BEGIN SET @SQL = @SQL + ' CASE WHEN STRT_DT_DFC BETWEEN ' + CONVERT(VARCHAR,@J) + ' AND ' + CONVERT(VARCHAR, @J+6) + ' THEN COUNT(STRT_DT_DFC) ELSE 0 END AS [Week' + CONVERT(VARCHAR, @I+1) + '],' SET @J = @J + 7 SET @I = @I + 1 ENDSET @SQL = SUBSTRING(@SQL, 0, LEN(@SQL))SET @SQL = @SQL + ' FROM DMT050_DIAB_MED o group by o.ID,o.STRT_DT_DFC'SELECT @SQLEXECUTE sp_executesql @SQL |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-02-01 : 13:12:40
|
i think sql string should be modified like below..SET @SQL = @SQL + ' COUNT(CASE WHEN STRT_DT_DFC BETWEEN ' + CONVERT(VARCHAR,@J) + ' AND ' + CONVERT(VARCHAR, @J+6) + ' THEN STRT_DT_DFC ELSE 0 END) AS [Week' + CONVERT(VARCHAR, @I+1) + '],'... ------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
|
bluemagic74
Starting Member
15 Posts |
Posted - 2012-02-03 : 14:32:25
|
| Thanks Visakh, output is not correct with above change.Let me put the question like thismy data is :ID,STRT_DT_DFC,END_DT_DFC1010,1,51010,1,101010,8,21 So I need result like thisSo Start date and end date between 1-7 or 8-14 or 15-21Weekly count per userID,Week1(1-7),week2(8-14),week3(15-21)1010, 1,0,01010,1,1,01010,0,1,1result should be...like belowso for user 1010 the week1 count is 2, week2 count is 2, week3 count is 1 I need a script to get weekly count per user. Thank you. |
 |
|
|
|
|
|