Quantcast
Channel: SQLServerCentral » SQL Server 2014 » Development - SQL Server 2014 » Latest topics
Viewing all articles
Browse latest Browse all 3145

Multi select with cte

$
0
0
I am trying to select data from this table[code="sql"]CREATE TABLE [dbo].[tb_value]( [NameID] [tinyint] NOT NULL, [Times] [datetime] NOT NULL, [Value] [real] NOT NULL, CONSTRAINT [PK_tb_value] PRIMARY KEY CLUSTERED ( [NameID] ASC, [Times] ASC)) ON [PRIMARY];[/code]like this[code="sql"] WITH te_basis AS ( SELECT NameID,Times,Value,ROW_NUMBER() OVER (PARTITION BY tb_value.NameID ORDER BY Times) r FROM tb_value WHERE NameID = 21 ORDER BY Times DESC OFFSET (0) ROWS FETCH NEXT (11) ROWS ONLY ), te_quote_1 AS ( SELECT NameID,Times,Value,ROW_NUMBER() OVER (PARTITION BY tb_value.NameID ORDER BY Times) r FROM tb_value WHERE NameID = 31 ORDER BY Times DESC OFFSET (0) ROWS FETCH NEXT (11) ROWS ONLY ) SELECT ( SELECT DATEDIFF(MINUTE,a.Times,ISNULL(b.Times,a.Times)) AS basis,a.Value - ISNULL(b.Value,0) AS delta FROM te_basis a JOIN te_basis b ON a.r+1 = b.r ORDER BY a.Times DESC OFFSET (1) ROWS FETCH NEXT (10) ROWS ONLY ), ( SELECT DATEDIFF(MINUTE,c.Times,ISNULL(d.Times,c.Times)) FROM te_quote_1 c JOIN te_quote_1 d ON c.r+1 = d.r ORDER BY c.Times DESC OFFSET (1) ROWS FETCH NEXT (10) ROWS ONLY );[/code]however I keep getting the error"Only one expression can be specified in the select list when the subquery is not introduced with EXISTS."I have not used this predicate before but my understanding is it returns one row, [b]indiscriminately[/b]. I need to insert all rows that meet my conditions not just one row. However, this seems to work but it selects for one column only.[code="sql"] WITH te_basis AS ( SELECT NameID,Times,Value,ROW_NUMBER() OVER (PARTITION BY tb_value.NameID ORDER BY Times) r FROM tb_value WHERE NameID = 31 ORDER BY Times DESC OFFSET (0) ROWS FETCH NEXT (11) ROWS ONLY ) --SELECT --( SELECT DATEDIFF(MINUTE,a.Times,ISNULL(b.Times,a.Times)) AS basis,a.Value - ISNULL(b.Value,0) AS delta FROM te_basis a JOIN te_basis b ON a.r+1 = b.r ORDER BY a.Times DESC OFFSET (1) ROWS FETCH NEXT (10) ROWS ONLY --)[/code]How can I go about this?

Viewing all articles
Browse latest Browse all 3145

Trending Articles