如何根据SQL Server中的条件在一个查询中编写多个查询?

时间:2019-05-26 05:28:00

标签: sql sql-server

pip show <package name>

如何将该查询更改为一个查询?

3 个答案:

答案 0 :(得分:2)

如果要对表达式求和并在三个不同的列([x][y][z]中获得结果),请使用下一种方法。

SELECT 
    [LNMAJORTP],
    [MainType],
    SUM(CASE WHEN state LIKE '%firstCondition%' THEN x+y-z END) AS [x],
    SUM(CASE WHEN state LIKE '%secondCondition%' THEN x+y-z END) AS [y],
    SUM(CASE WHEN state LIKE '%thirdCondition%' THEN x+y-z END) AS [z]
FROM [my_table] 
GROUP BY [LNMAJORTP], [MainType] 

如果只想对一个表达式求和(在示例中为x+y-z),则OR子句中的简单WHERE应该有效。表达式的结果将在一列中:

SELECT 
    [LNMAJORTP],
    [MainType],
    SUM(x+y-z) AS [x_y_z]
FROM [my_table] 
WHERE state LIKE '%firstCondition%' OR state LIKE '%secondCondition%' OR state LIKE '%thirdCondition%'
GROUP BY [LNMAJORTP], [MainType] 

答案 1 :(得分:0)

您可以如下合并三个查询。它将在不同的行中返回结果-

SELECT state,[LNMAJORTP],[MainType],
sum(x+y-z) [z]
FROM [my_table]  
where state LIKE '%thirdCondition%'
OR state LIKE '%firstCondition%'
OR state LIKE '%secondCondition%'
GROUP BY state,[LNMAJORTP],[MainType] 

答案 2 :(得分:0)

您可以在每次选择之间尝试UNION ALL。

SELECT 
    [LNMAJORTP], [MainType],
    SUM(x + y - z) [x]
FROM 
    [my_table]  
WHERE 
    state LIKE '%firstCondition%'
GROUP BY
    [LNMAJORTP], [MainType] 
UNION ALL
SELECT 
    [LNMAJORTP], [MainType],
    SUM(x + y - z) [y]
FROM 
    [my_table]  
WHERE 
    state LIKE '%secondCondition%'
GROUP BY
    [LNMAJORTP], [MainType] 
UNION ALL
SELECT 
    [LNMAJORTP], [MainType],
    SUM(x + y - z) [z]
FROM 
    [my_table]  
WHERE
    state LIKE '%thirdCondition%'
GROUP BY
    [LNMAJORTP], [MainType]