我的dbo.Report表有一个名为名称的列。我需要以某种方式选择子选择中的Name列。如何从子选择中获取Name值?一旦我有了那些我需要能够运行另一个选择查询,如:
SELECT * FROM MyOtherTable WHERE Name = @pName
其中@pName是一个新创建的变量,可能包含子选择的值?我不确定这是怎么回事。或类似的东西:
SELECT * FROM MyOtherTable WHERE Name IN (the values from my sub select go here)
PROC:
SELECT ListingInfo,
COALESCE((SELECT SUM(ListingViews)
FROM dbo.Report
WHERE (ID = @pID)
AND (DateEntered BETWEEN DATEADD(MONTH, 0, @pFromDate) AND DATEADD(MONTH, 1, @pToDate)-1)
GROUP BY ID), 0) AS 'Views'
FROM dbo.Reporting r
INNER JOIN dbo.Listings l ON (r.ID = l.ID)
WHERE (r.ID = @pID)
AND l.TypeCode = 20
答案 0 :(得分:2)
您可以使用表变量来存储您的姓名。
DECLARE @Names TABLE
(
Name varchar(250),
SomeInt int
)
INSERT INTO @Names (Name, SomeInt)
SELECT Name, sum(ListingViews)
FROM WhateverTable
GROUP BY Name
SELECT * FROM OtherTable WHERE Name IN (SELECT Name FROM @Names)
您可以继续使用@Names,就好像它是任何其他表一样,如果您在存储过程中使用它,它将在结束时自动处理表变量的清理。
答案 1 :(得分:0)
这样的东西? 或者你还需要什么? 完全没理解,抱歉。
SELECT *
FROM MyOtherTable
WHERE Name IN (SELECT name FROM Table WHERE Name = @pName)
修改强> 像这样的东西?
SELECT COUNT(*), name
FROM MyOtherTable O, Table T
WHERE O.Name = T.NAME
AND T.NAME = @pName
group by name