多个选择到单个结果行

Ben

我正在尝试将 2 个 select 语句合并到一个查询中,如果可能的话,我希望以包含 4 列的 1 行(每个查询 2 个)结束。我确信我过去使用过类似下面的内容没有问题,但我收到错误消息“当子查询未通过 EXISTS 引入时,只能在选择列表中指定一个表达式。”

谢谢

SELECT 
(SELECT
SUM(SO.new_profits_sales_totalactualprofit) as TAP_AFFINITY, 
SUM(SO.new_profits_sales_totaldealprofit) as TDP_AFFINITY
FROM new_dealsheet DS
LEFT JOIN salesorder SO ON DS.new_dsheetid = SO.salesorderid
LEFT JOIN New_salespeople SP ON DS.New_SalespersonId = SP.New_salespeopleId 
WHERE CAST(SO.New_purchaseordersenddate as date) = CAST(GETDATE() as date)  
AND SO.New_PassedToAdmin = 1
AND SP.New_SalesGroupIdName = 'AFFINITY') as t1,

(SELECT
SUM(SO.new_profits_sales_totalactualprofit) as TAP_GENUS, 
SUM(SO.new_profits_sales_totaldealprofit) as TDP_GENUS
FROM new_dealsheet DS
LEFT JOIN salesorder SO ON DS.new_dsheetid = SO.salesorderid
LEFT JOIN New_salespeople SP ON DS.New_SalespersonId = SP.New_salespeopleId 
WHERE CAST(SO.New_purchaseordersenddate as date) = CAST(GETDATE() as date)  
AND SO.New_PassedToAdmin = 1
AND SP.New_SalesGroupIdName = 'GENUS') as t2
马丁·史密斯

您可以交叉连接两个单行结果集以组合它们。

WITH t1 AS
(
SELECT
SUM(SO.new_profits_sales_totalactualprofit) as TAP_AFFINITY, 
SUM(SO.new_profits_sales_totaldealprofit) as TDP_AFFINITY
FROM new_dealsheet DS
LEFT JOIN salesorder SO ON DS.new_dsheetid = SO.salesorderid
LEFT JOIN New_salespeople SP ON DS.New_SalespersonId = SP.New_salespeopleId 
WHERE CAST(SO.New_purchaseordersenddate as date) = CAST(GETDATE() as date)  
AND SO.New_PassedToAdmin = 1
AND SP.New_SalesGroupIdName = 'AFFINITY'
), t2 AS
(
SELECT
SUM(SO.new_profits_sales_totalactualprofit) as TAP_GENUS, 
SUM(SO.new_profits_sales_totaldealprofit) as TDP_GENUS
FROM new_dealsheet DS
LEFT JOIN salesorder SO ON DS.new_dsheetid = SO.salesorderid
LEFT JOIN New_salespeople SP ON DS.New_SalespersonId = SP.New_salespeopleId 
WHERE CAST(SO.New_purchaseordersenddate as date) = CAST(GETDATE() as date)  
AND SO.New_PassedToAdmin = 1
AND SP.New_SalesGroupIdName = 'GENUS'
)
SELECT *
FROM t1 cross join T2

但更好的方法是在一个查询中完成所有操作

SELECT SUM(CASE WHEN SP.New_SalesGroupIdName = 'GENUS' THEN SO.new_profits_sales_totalactualprofit END) AS TAP_GENUS,
       SUM(CASE WHEN SP.New_SalesGroupIdName = 'GENUS' THEN SO.new_profits_sales_totaldealprofit END)   AS TDP_GENUS,
       SUM(CASE WHEN SP.New_SalesGroupIdName = 'AFFINITY' THEN SO.new_profits_sales_totalactualprofit END) AS TAP_AFFINITY,
       SUM(CASE WHEN SP.New_SalesGroupIdName = 'AFFINITY' THEN SO.new_profits_sales_totaldealprofit END)   AS TDP_AFFINITY
        FROM   new_dealsheet DS
               LEFT JOIN salesorder SO
                      ON DS.new_dsheetid = SO.salesorderid
               LEFT JOIN New_salespeople SP
                      ON DS.New_SalespersonId = SP.New_salespeopleId
        WHERE  CAST(SO.New_purchaseordersenddate AS DATE) = CAST(GETDATE() AS DATE)
               AND SO.New_PassedToAdmin = 1
               AND SP.New_SalesGroupIdName IN ( 'GENUS','AFFINITY')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Postgres 从一个到多个表中选择单个表行

如何选择与多个ID相关的单个行?

xmlstarlet XPath表达式选择单个结果而不是多个

将多个 qsub 作业结果重定向到单个文件

BreezeJS-来自多个linq查询到单个对象的结果

将多个列的正结果传递到r中的单个新列中

如何将来自多个MongoDB记录的字符串结果串联到MongoDB中的单个结果中?

多个片段到单个活动

如何从一个结果行的单个表中的几行中选择数据?

如果我有多个具有相同值的行,如何从mysql结果中获取单个值

MySQL:选择多个子查询的结果时,“子查询返回多个行”

标量的多个结果可供选择

将多个选择语句结果存储到一个变量中

使用LIMIT选择单个行

如何从一行中选择多个值并将其作为单个列值联接

在单个查询中选择具有多个值的最后N行

从单个快照表中选择多个“最新”行,每个故事一个快照

laravel单个查询有多个结果

MongoDB - 多个查询和单个文档结果

从多个路径获取单个gremlin结果

串联单个XPath查询的多个结果

单个表中有多个查询结果

Altair散点图到条形图的单个选择数据框的行

有什么办法可以将多个API结果汇总到Django Rest Framework中的单个API中?

MySQL搜索单个和多个子选择

最快的是:单个选择器还是多个

为多个樱桃选择创建单个提交

单个查询中有多个选择语句

在单个xpath中选择多个节点