0
這裏我有兩個CTE,我需要從這兩個CTE中選擇一個值作爲單個查詢。我可以一次從單個CTE中選擇值,但我不知道如何合併這兩個CTE和從兩個CTE中選擇值。在一個查詢中合併兩個CTE
這裏詮釋下面的查詢,我可以能夠從第二CTE
DECLARE @now DateTime;
DECLARE @Firstweekstart DateTime;
DECLARE @FirstweekEnd DateTime;
SET @now = CONVERT(datetime, CONVERT(date,getdate()));
SET @Firstweekstart = DATEADD(
DD,
-(DATEPART(DW, @now - 7) - 1),
@now - 7);
SET @Firstweekstart = dateadd(ms, -1, @Firstweekstart)
SET @Firstweekend = DATEADD(
DD,
7 - (DATEPART(DW, @now - 7)),
@now - 7);
SET @Firstweekend = dateadd(ms, -3, @Firstweekend+1)
;WITH CTE1 AS
(
SELECT CHINFO.CHILDID,CHINFO.CONSUMERID,
DATEADD(DD, -(DATEPART(DW, CHINFO.Adddate)-1), CHINFO.Adddate) AS APPLICATIONUSAGESTARTDATE,
DATEDIFF(WW,CHINFO.Adddate,@now) AS WEEKNUMBER,
ROW_NUMBER() OVER
(PARTITION BY CHINFO.CHILDID ORDER BY CHINFO.Adddate ASC) AS RN
FROM BKA.CHILDINFORMATION CHINFO
LEFT OUTER JOIN BKA.CHILDEVENTS CHE
ON CHE.CHILDID = CHINFO.CHILDID
GROUP BY CHINFO.CHILDID,CHINFO.CONSUMERID,CHINFO.Adddate
)
,CTE2 as
(SELECT Distinct CHINFO.CHILDID ,CHE.TIMESTAMP
,ROW_NUMBER() OVER (PARTITION BY CHINFO.CHILDID ORDER BY CHE.TIMESTAMP) row
FROM BKA.CHILDINFORMATION CHINFO
JOIN BKA.CHILDEVENTS CHE
ON CHE.CHILDID = CHINFO.CHILDID
WHERE CHE.TYPE = 'pottybreak'
AND CHE.ADDDATE BETWEEN @Firstweekstart AND @Firstweekend
GROUP BY CHINFO.CHILDID,CHE.TIMESTAMP
)
SELECT
a.CHILDID ,
AVG(CONVERT(DECIMAl,DATEDIFF (minute , b.TIMESTAMP , a.TIMESTAMP))) as CURRENTWEEKTIMERRESTART
FROM
CTE2 a
LEFT JOIN CTE2 b
on a.CHILDID = b.CHILDID
and a.row = b.row+1
group by a.childid
我需要合併上述一個
SELECT CTE1.CONSUMERID,
CTE1.CHILDID,
CTE1.APPLICATIONUSAGESTARTDATE,
CTE1.WEEKNUMBER
FROM CTE1
WHERE RN = 1 ORDER BY CTE1.CHILDID ASC
任何建議下面的查詢中選擇值?
在這裏,我需要通過列表添加所有選定列該組中的權利? – bala3569
哦,是的..對..我只是添加了僞代碼.. – Deepshikha