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
祝你好运