用于合并同一行的两个查询的 SQL 查询


SELECT (SSTA*2)as gst, sum(SSTAAMO) as gstamo FROM DIS GROUP BY SSTA WHERE FLG="P"
SELECT (SSTA*2)as gst, sum(SSTAAMO) as gstamo FROM DIS GROUP BY SSTA WHERE FLG="G"

如何使一个查询以便并发运行。

P                G
Gst| gstamo|     gst| gstamo| 

你可以用单where子句表示它:

SELECT SSTA*2 as gst, 
sum(SSTAAMO) as gstamo 
FROM DIS 
WHERE FLG in ('P', 'G')
GROUP BY SSTA;

对于单独的,您可以使用条件聚合:

SELECT SSTA*2 as gst, 
sum(case when FLG = 'P' then SSTAAMO else 0 end) as Pgstamo,
sum(case when FLG = 'G' then SSTAAMO else 0 end) as Ggstamo  
FROM DIS 
WHERE FLG in ('P', 'G')
GROUP BY SSTA;

如果您只是泛泛而谈,请在两个查询之间使用联合。

SELECT (SSTA*2)as gst, sum(SSTAAMO) as gstamo FROM DIS GROUP BY SSTA WHERE FLG="P"
UNION
SELECT (SSTA*2)as gst, sum(SSTAAMO) as gstamo FROM DIS GROUP BY SSTA WHERE FLG="G"

如果您专门询问您发布的代码,只需将"位置"更改为:

WHERE FLG="P" OR FLG="G"
SELECT (SSTA*2) as gst, sum(SSTAAMO) as gstamo 
FROM DIS 
WHERE INLIST(FLG,"P","G") 
GROUP BY SSTA

目前尚不清楚您使用的是哪种SQL语法。

请记住,SQL 语法需要与从中获取数据的数据库匹配。 Foxpro SQL语法略显非标准,与MySQL SQL语法不同。

你的发布标签:mysql sql foxpro dbase
包含Foxpro,那么我可以假设你正在使用FP SQL语法来查询Foxpro数据表吗?

我想要两行商品及服务税

如果我明白你想要什么,似乎你想要"P"的 gst 结果在一行中,而"G"的 gst 结果在单独的行中。

如果您从 Foxpro 数据表中获取数据,那么您可以考虑以下情况:

SELECT (SSTA*2)as gst, IIF(Flg = "P","P","G") as SortFlg, sum(SSTAAMO) as gstamo FROM DIS WHERE FLG $ "P,G" GROUP BY 1,2   

引入添加的字段 SORTFLG 并将其(#2 字段(作为 GROUP BY 语句的一部分,将强制将"P"和"G"的结果放入单独的结果行中。 如果需要,您始终可以在以后删除该额外字段。

如果要从另一个使用 SQL 语法不支持 IIF(( 语法的数据库获取数据,则可以使用 CASE 语法创建新的 SORTFLG。

编辑:为什么我以前没有想到它,我不知道。 无论如何,你根本不需要 IIF(( 语法。 您仍然可以引入新的第二个字段SORTFLG,但您可以单独使用 FLG 字段,而不是使用 IIF(( 命令,但请确保包含在 GROUP BY 行中,以便您的结果将具有单独的"P"记录和"G"记录。

SELECT (SSTA*2)as gst, Flg as SortFlg, sum(SSTAAMO) as gstamo FROM DIS WHERE FLG $ "P,G" GROUP BY 1,2   

祝你好运

相关内容

  • 没有找到相关文章

最新更新