Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何区分名称并根据名称添加?_Sql_Sql Server 2008 - Fatal编程技术网

Sql 如何区分名称并根据名称添加?

Sql 如何区分名称并根据名称添加?,sql,sql-server-2008,Sql,Sql Server 2008,名为产品的表和列分别为ID,Pname,利润,亏损,月份。全部的 前六个月的Total=Sum(price)-Sum(Loss),在一个名为Col1的列中,最后六个月的Total=Sum(price)-Sum(Loss)在一个名为Col2的列中,用它们的Pname分隔 样本输入: ID PName Month Profit Loss -- ----- ----- ------ ---- 1 A JAN 5 2 2 B FEB 4

名为
产品
的表和列分别为
ID
Pname
利润
亏损
月份
。全部的 前六个月的
Total=Sum(price)-Sum(Loss)
,在一个名为
Col1
的列中,最后六个月的
Total=Sum(price)-Sum(Loss)
在一个名为
Col2
的列中,用它们的
Pname
分隔

样本输入:

ID  PName  Month  Profit  Loss
--  -----  -----  ------  ----
1   A      JAN    5       2
2   B      FEB    4       2
3   A      MAR    10      3
4   B      Nov    5       2
预期产量

PName  Col1  col2
-----  ----  ----
A      10    0
B      2     3

在SQL Server中执行此操作的方法是什么?

这似乎可以完成此任务:

declare @t table (ID int not null,PName char(1) not null,Month char(3) not null,
                  Profit int not null,Loss int not null)
insert into @t(ID,PName,Month,Profit,Loss) values
(1,'A','JAN',5,2),
(2,'B','FEB',4,2),
(3,'A','MAR',10,3),
(4,'B','Nov',5,2)

;With Halves as (
    select PName,
        CASE WHEN Month in ('Jan','Feb','Mar','Apr','May','Jun') THEN 1
            ELSE 2 END as Half,
        Profit - Loss as Net
    from @t
)
select PName,
    COALESCE([1],0) as Col1,
    COALESCE([2],0) as Col2
from Halves pivot (SUM(Net) for Half in ([1],[2])) p
我通常不建议使用名为
Month
(因为它是一个关键字)的列,并且通常希望它是固定在适当月份的第一个(或者有相关年份,或者也有固定年份)的
date


我已经采取了一个简化步骤,
SUM(Profit)-SUM(Loss)
SUM(Profit-Loss)

不使用pivot和COALESCE有可能吗?@user3158245-可能吧,但这就像请求帮助使用螺钉连接两块木头,然后在有人建议使用合适的工具之后,然后你问我是否可以不用螺丝刀来做。SUM(利润)-SUM(亏损)和SUM(利润-亏损)是一样的,但是如果我想像SUM(利润)/SUM(亏损)那样除以它,我该怎么做?