HI专家我第二天坚持这个查询 我有两个查询从一个视图中选择参数
--Query A
SELECT [ITEM_TYPE]
,[ITEM_NAME]
,AVG([ACT_VOL])
FROM [MyDb].[dbo].[VT_TOTALS]
WHERE ITEM_TYPE = 'A'
AND PROD_VOL != '0'
AND PROD_VOL IS NOT NULL
AND START_DATETIME >=DATEADD(day,-1, '20120420')
group by [ITEM_TYPE],[ITEM_NAME]
--Query B
SELECT [ITEM_TYPE]
,[ITEM_NAME]
,AVG([ACT_VOL])
FROM [MyDb].[dbo].[VT_TOTALS]
WHERE ITEM_TYPE = 'A'
AND PROD_VOL != '0'
AND PROD_VOL IS NOT NULL
AND START_DATETIME >=DATEADD(day,-7, '20120420')
AND START_DATETIME <='20120420'
group by [ITEM_TYPE],[ITEM_NAME]
结果应该是
A. [ITEM_TYPE], A.[ITEM_NAME], A. AVG([ACT_VOL]),B. AVG([ACT_VOL])
有帮助吗?
我试图从它们创建嵌套查询但不能这样做它不希望fork with where子句
答案 0 :(得分:1)
试试这个:
SELECT A.ITEM_TYPE,A,ITEM_NAME,A.avgA,B.avgB
FROM
(
SELECT [ITEM_TYPE]
,[ITEM_NAME]
,AVG([ACT_VOL]) as avgA
FROM [MyDb].[dbo].[VT_TOTALS]
WHERE ITEM_TYPE = 'A'
AND PROD_VOL != '0'
AND PROD_VOL IS NOT NULL
AND START_DATETIME >=DATEADD(day,-1, '20120420')
group by [ITEM_TYPE],[ITEM_NAME]
) A FULL JOIN
(
SELECT [ITEM_TYPE]
,[ITEM_NAME]
,AVG([ACT_VOL]) as avgB
FROM [MyDb].[dbo].[VT_TOTALS]
WHERE ITEM_TYPE = 'A'
AND PROD_VOL != '0'
AND PROD_VOL IS NOT NULL
AND START_DATETIME >=DATEADD(day,-7, '20120420')
AND START_DATETIME <='20120420'
group by [ITEM_TYPE],[ITEM_NAME]
) B on A.ITEM_TYPE=B.ITEM_TYPE and A.ITEM_NAME=B.ITEM_NAME
答案 1 :(得分:1)
试试这个:
SELECT [ITEM_TYPE]
, [ITEM_NAME]
, AVG([ACT_VOL]) AVG_A,
, AVG(CASE WHEN START_DATETIME <='20120420' THEN ACT_VOL END) AVG_B
FROM [MyDb].[dbo].[VT_TOTALS]
WHERE ITEM_TYPE = 'A'
AND PROD_VOL != '0'
AND PROD_VOL IS NOT NULL
AND START_DATETIME >=DATEADD(day,-7, '20120420')
GROUP BY [ITEM_TYPE],[ITEM_NAME]