Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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_Sql Server 2014 - Fatal编程技术网

Sql 只打印一次一个字段的总数

Sql 只打印一次一个字段的总数,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,您好,我对这个查询有一个问题,我的问题是,在这个查询中,我必须打印每个章节的总数,但我必须在描述发生变化时进行打印,我尝试用图表解释,如何在每个描述的末尾添加一个字段,仅添加1,2,3: Descrizione Totale TotaleCapitolo DescrizioneDis descrizione di prova

您好,我对这个查询有一个问题,我的问题是,在这个查询中,我必须打印每个章节的总数,但我必须在描述发生变化时进行打印,我尝试用图表解释,如何在每个描述的末尾添加一个字段,仅添加1,2,3:

Descrizione                            Totale                TotaleCapitolo         DescrizioneDis

descrizione di prova                                       ------1----------             ---------------

                                                           -------2---------             ---------------

                                      SUM(1,2,3)          -------3---------             ---------------

descrizione di prova 2                                    ----------------            -----           
查询:

SELECT 

CASE WHEN ROW_NUMBER() OVER(PARTITION BY Capitolo.Descrizione order by Capitolo.Descrizione) = 1 THEN Capitolo.Descrizione ELSE '' END AS 'Descrizione',

SottoCapitolo.CostoUnitario as TotaleCapitolo,SottoCapitolo.Descrizione as DescrizioneDis, SottoCapitolo.Immagine, SottoCapitolo.DescrizioneEstesa, SottoCapitolo.Quantita, ROUND(((SottoCapitolo.CostoUnitario) + (((SottoCapitolo.CostoUnitario) / 100) * PercentualeMargine) + (((SottoCapitolo.CostoUnitario) / 100) * PercentualeUtile) + (((SottoCapitolo.CostoUnitario) / 100) * PercentualeSpeseGenerali)), 0) as CostoUnitario FROM Preventivo inner join Capitolo on Preventivo.IdPreventivo = Capitolo.IdPreventivo inner join SottoCapitolo on SottoCapitolo.IdCapitolo = Capitolo.IdCapitolo  where Preventivo.IdPreventivo='7' order by Capitolo.Descrizione 
查询运行:

SELECT 

CASE WHEN ROW_NUMBER() OVER(PARTITION BY Capitolo.Descrizione order by Capitolo.Descrizione) = 1 THEN Capitolo.Descrizione ELSE '' END AS 'Descrizione',

SottoCapitolo.CostoUnitario as TotaleCapitolo,SottoCapitolo.Descrizione as DescrizioneDis, SottoCapitolo.Immagine, SottoCapitolo.DescrizioneEstesa, SottoCapitolo.Quantita, ROUND(((SottoCapitolo.CostoUnitario) + (((SottoCapitolo.CostoUnitario) / 100) * PercentualeMargine) + (((SottoCapitolo.CostoUnitario) / 100) * PercentualeUtile) + (((SottoCapitolo.CostoUnitario) / 100) * PercentualeSpeseGenerali)), 0) as CostoUnitario FROM Preventivo inner join Capitolo on Preventivo.IdPreventivo = Capitolo.IdPreventivo inner join SottoCapitolo on SottoCapitolo.IdCapitolo = Capitolo.IdCapitolo  where Preventivo.IdPreventivo='7' order by Capitolo.Descrizione 

查询后


我希望这能进一步帮助您

更新

DescriptionEdis在第三列,Immagine在第四列

DECLARE @T AS TABLE (Descrizione VARCHAR(255), Totale DECIMAL(18,6), DescrizioneDis VARCHAR(255), Immagine VARCHAR(255))
INSERT INTO @T 
VALUES 
    ('descrizione di prova', 102.40, 'Tastiera ...', 'I:\So...'),
    ('descrizione di prova', 176.076, 'Echo 927 ...', 'I:\So...'),
    ('descrizione di prova', 32.03, 'CASS IP55 ...', '0'),
    ('descrizione di prova 2', 330.39, 'Accoppiatore ...', 'I:\So...')

SELECT CASE WHEN ROW_NUMBER() OVER(PARTITION BY a.Descrizione order by a.Descrizione) = 1 THEN a.Descrizione ELSE '' END AS Descrizione, 
    a.Totale, a.DescrizioneDis
FROM (
    SELECT 1 AS d, ROW_NUMBER() OVER(PARTITION BY Descrizione order by Descrizione) AS r, Descrizione, Totale, DescrizioneDis, Immagine
    FROM @T
    UNION ALL
    SELECT 2, 0, Descrizione, SUM(Totale), '', ''
    FROM @T
    GROUP BY Descrizione
    ) AS a
ORDER BY a.Descrizione, a.d
结果

+----------------------+-----------+---------------+---------+
|Descrizione           |Totale     |DescrizioneDis |Immagine |
+----------------------+-----------+---------------+---------+
|descrizione di prova  |102.400000 |Tastiera ...   |I:\So... |
|                      |176.076000 |Echo 927 ...   |I:\So... |
|                      |32.030000  |CASS IP55 ...  |0        |
|                      |310.506000 |               |         |
|descrizione di prova 2|330.390000 |Accoppiatore ..|I:\So... |
|                      |330.390000 |               |         |
+----------------------+-----------+---------------+---------+

如果这不是所需的输出,请进一步指定。

这与C#或visual studio无关。这是一个SQL问题。请将问题标记为您正在使用的服务器(看起来像SQL server)。我错了,我调整了@Robi have try,但它没有运行!您正在运行哪个版本的sql server?我已经在SQL 2012上测试过了,它可以正常工作。这也适用于SQL 2008。我的版本是SQL server 2014。。。你有什么错误?我无法想象这在SQL 2014上不会起作用。我刚刚再次执行了此操作,没有任何问题。我仔细检查了我遇到的一些问题,当您的查询工作时,但我没有看到我的查询中包含的值(descripionedis,Immagine,…),我添加了您上面查询的图像