Sql 单行用于选择中的多个案例
我需要一个解决以下问题的方案 我有一个带有列的temp表:Sql 单行用于选择中的多个案例,sql,sql-server,Sql,Sql Server,我需要一个解决以下问题的方案 我有一个带有列的temp表:a、b、c、d,数据如下所示: 工作台温度 查询 上面的查询提供了多个值为空的行,其中值不存在 我需要一个包含一行的结果集,如下所示: 预期结果 这样做(使用CTE) 查询 请告诉我它是否有效 您能告诉我们预期输出背后的逻辑吗?您最好使用基于c=1的派生表,然后使用基于d的pivot函数,通过aI对结果进行分组,而不需要多行。所以我期待它与单排。我需要此结果集来检查验证t-sql过程您使用了top 1,这可能会为示例提供正确的结果,但
a、b、c、d
,数据如下所示:
工作台温度
查询
上面的查询提供了多个值为空的行,其中值不存在
我需要一个包含一行的结果集,如下所示:
预期结果
这样做(使用CTE)
查询
请告诉我它是否有效 您能告诉我们预期输出背后的逻辑吗?您最好使用基于c=1的派生表,然后使用基于d的pivot函数,通过aI对结果进行分组,而不需要多行。所以我期待它与单排。我需要此结果集来检查验证t-sql过程您使用了top 1,这可能会为示例提供正确的结果,但查询中提到的where条件也很重要..它会起作用,但我不需要为每种情况“选择”。。。你有什么解决办法吗?谢谢Murtaza,但这只是他如何解决问题的一个例子。他将使用的SQL并不准确。。它给出了一个想法我不确定是否还有其他方法我有20个这样的案例陈述。。因此,如果我为每种情况编写select,那么性能将受到影响。。所以我在寻找更好的解决方案。
+---+----+----+----+
|a | b | c | d |
+===+====+====+====+
| 1 | 1 | 1 | m |
| 1 | 2 | 1 | d |
| 1 | 3 | 1 | w |
| 2 | 1 | 1 | m |
| 2 | 2 | 1 | d |
| 2 | 2 | 1 | w |
+---+----+----+----+
SELECT CASE WHEN B=1 AND C=1 THEN D END as T1,
CASE WHEN B=2 AND C=1 THEN D END as T2,
CASE WHEN B=3 AND C=1 THEN D END as T3
FROM TEMP
WHERE A=1
+------+-------+------+
| T1 | T2 | T3 |
+======+=======+======+
| m | d | w |
+------+-------+------+
WITH
CTE1 as (select top 1 d as T1 from temp where b=1 and c=1),
CTE2 as (select top 1 d as T2 from temp where b=2 and c=1),
CTE3 as (select top 1 d as T3 from temp where b=3 and c=1)
select CTE1.*, CTE2.*, CTE3.*
FROM CTE1 CROSS JOIN CTE2 CROSS JOIN CTE3