3输入5输出。在现有数据上创建新列

时间:2013-04-08 18:09:01

标签: c# database sql-server-2008 datagridview

我输入了:bruto,a / p%,t / a%:

示例:

  • bruto | a / p%| t / a%|
  • 100 | 50 | 25 |

我想要的输出:

  • bruto | a / p%|内托| t / a%|总计|
  • 100 | 50 |公式:100/100 * a / p%= 50 | 25 |公式:50/100 * t / a%= 12,5 |

我的代码目前查询。努力创造:

Bruto | a/p% | Neto | and then syntax errors

tabula22.Load(new SqlCommand("SELECT     dbo.produkti_items_tab.itemname AS [Produkta nosaukums], dbo.tehnkart_produkt_tab.bruto AS [Bruto sv.], dbo.tehnkart_produkt_tab.aukstie_zudumi_proc AS [Zudumi % a/p],CAST((dbo.tehnkart_produkt_tab.bruto / 100 *


dbo.tehnkart_produkt_tab.aukstie_zudumi_proc) AS numeric(10,2)) 'Neto sv. gr.', dbo.tehnkart_produkt_tab.karstie_zudumi_proc AS [Zudumi % t/a], CAST((dbo.[Neto sv. gr.] / 100 * dbo.[Zudumi % t/a]) AS numeric(10,2)) 'beka', CAST(([Bruto sv.]-[Neto sv. gr.]-[beka]) AS numeric(10,2)) 'Total'   
FROM dbo.tehnkart_produkt_tab INNER JOIN dbo.produkti_items_tab ON dbo.tehnkart_produkt_tab.item_id = dbo.produkti_items_tab.itemid WHERE (dbo.tehnkart_produkt_tab.kart_id = '" + dat1_id + "')", TestConnection).ExecuteReader());

p.s hard edit here =]

1 个答案:

答案 0 :(得分:0)

问题是您尝试多次引用列别名。您必须将当前查询包装在子查询中以多次使用列定义:

string mySql = @"
SELECT [Produkta nosaukums],
    [Bruto sv.],
    [Zudumi % a/p],
    [Neto sv. gr.],
    [Zudumi % t/a],
    CAST(([Neto sv. gr.] / 100 * [Zudumi % t/a]) AS numeric(10,2)) [beka],
    CAST(([Bruto sv.]-[Neto sv. gr.]-(CAST(([Neto sv. gr.] / 100 * [Zudumi % t/a]) AS numeric(10,2)))) AS numeric(10,2)) [Total]
FROM
(
    SELECT dbo.produkti_items_tab.itemname AS [Produkta nosaukums], 
        dbo.tehnkart_produkt_tab.bruto AS [Bruto sv.], 
        dbo.tehnkart_produkt_tab.aukstie_zudumi_proc AS [Zudumi % a/p],
        CAST((dbo.tehnkart_produkt_tab.bruto / 100 * dbo.tehnkart_produkt_tab.aukstie_zudumi_proc) AS numeric(10,2)) [Neto sv. gr.], 
        dbo.tehnkart_produkt_tab.karstie_zudumi_proc AS [Zudumi % t/a] 
    FROM dbo.tehnkart_produkt_tab 
    INNER JOIN dbo.produkti_items_tab 
        ON dbo.tehnkart_produkt_tab.item_id = dbo.produkti_items_tab.itemid 
    WHERE dbo.tehnkart_produkt_tab.kart_id = '" + dat1_id + @"'
) d";
tabula22.Load(new SqlCommand(mySql, TestConnection).ExecuteReader());