根据sql中的行条件从行中获取数据

根据sql中的行条件从行中获取数据,sql,sql-server,Sql,Sql Server,我有一个结构如下的表: 我只想得到值大于4小于8的标记x之间的标记y: 有什么关于函数的建议可以说明我的观点吗 高级甲状旁腺激素 DECLARE @StartDate DATETIME; DECLARE @EndDate DATETIME; SELECT @StartDate = t.[date] FROM dbo.MyTable t WHERE t.tag = 'x' AND t.value = 4; SELECT @EndDate = t.[date] FROM dbo.MyTable

我有一个结构如下的表:

我只想得到值大于4小于8的标记x之间的标记y:

有什么关于函数的建议可以说明我的观点吗

高级甲状旁腺激素

DECLARE @StartDate DATETIME;
DECLARE @EndDate DATETIME;

SELECT @StartDate = t.[date]
FROM dbo.MyTable t
WHERE t.tag = 'x'
AND t.value = 4;

SELECT @EndDate = t.[date]
FROM dbo.MyTable t
WHERE t.tag = 'x'
AND t.value = 8;

SELECT
  t.[date]
  ,t.tag
  ,t.value
FROM dbo.MyTable t
WHERE t.tag = 'y'
AND t.[date] > @StartDate
AND t.[date] < @EndDate
ORDER BY t.[date];
或者如果您必须在单个查询中使用它

SELECT
  t.[date]
  ,t.tag
  ,t.value
FROM dbo.MyTable t
WHERE t.tag = 'y'
AND t.[date] > (SELECT t2.[date] FROM dbo.MyTable t2 WHERE t2.tag = 'x' AND t2.value = 4)
AND t.[date] < (SELECT t3.[date] FROM dbo.MyTable t3 WHERE t3.tag = 'x' AND t3.value = 8)
ORDER BY t.[date];

如果值15也有一个标记“x”,会发生什么?其中值>4,值<8。问题是上面显示的表只是我的表输出的简化。实际表格包含的x和y非常不同。理想情况下,我想得到标记x的日期,其中值为4,值为8,然后做一个陈述,我可以这样说:我的第一个找到的值和第二个找到的值之间的日期。所以4和8是固定的,或者你想要所有的y都包装在x之间?所有在x之间包装的东西:太好了非常感谢-这正是我需要的!:我投了更高的票,但没有显示出来,因为我的声望不到15。没问题。您需要选择此作为答案,而不是向上投票。谢谢