首页 新闻 赞助 找找看

SQL视图求和

0
[已解决问题] 解决于 2013-05-27 16:32

新建了一个数据库视图,显示查询出的列如下样式:

写出查询语句,用lambda语句写出,

或者是说下用视图查询的方法也行,

淘@淘的主页 淘@淘 | 小虾三级 | 园豆:602
提问于:2013-05-17 13:58
< >
分享
最佳答案
0

groupby 客户名称和月份行么

奖励园豆:5
芒果の冰 | 初学一级 |园豆:187 | 2013-05-17 14:04

可是数量怎么相加呢,我用的是lambda

淘@淘 | 园豆:602 (小虾三级) | 2013-05-17 14:05

@淘@淘: 

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<St> l = new List<St> { 
                new St{Name="A",Num=3,Yue="一月"},
                new St{Name="B",Num=2,Yue="一月"},
                new St{Name="A",Num=5,Yue="一月"},
                new St{Name="B",Num=2,Yue="一月"},
                new St{Name="A",Num=2,Yue="二月"},
                new St{Name="B",Num=1,Yue="二月"},
                new St{Name="A",Num=2,Yue="二月"}
            };


            var q = l.GroupBy(e => new { e.Name, e.Yue })
                .Select(
                     g =>
                         new
                         {
                             客户名称 =g.Key.Name,                            
                             数量 = g.Sum(e => (Int32)(e.Num)),
                             日期 = g.Key.Yue,
                         }
                 );

            foreach (var item in q)
            {
                Console.WriteLine(item.客户名称 + "----" + item.数量 + "----" + item.日期);
            }
        }
    }

    class St
    {
        public string Name { get; set; }
        public int Num { get; set; }
        public string Yue { get; set; }

    }
}
芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 14:37

@淘@淘

芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 14:39

@淘@淘: 数量那里不用强制转换(Int32)也可以

芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 14:41

@芒果の冰: 不行啊,有没有好的方法啊,在视图里能实现的Sum求和

淘@淘 | 园豆:602 (小虾三级) | 2013-05-17 14:45

@淘@淘: 

select 客户名称,sum(num) as 数量,日期
fromgroup by 客户名称,日期
芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 14:50

@芒果の冰: 你看我的视图语句:

SELECT     CONVERT(datetime, CONVERT(varchar(20), dbo.Rec_SalesOrder.AutitDate, 111)) AS AutitDate, SUM(dbo.Rec_SalesOrder_Sub.Quantity) 
                      AS TotleQuantity, dbo.Mer_Package.Barcodes, dbo.Mer_Product.UserCode, dbo.Mer_Product.Name, dbo.Mer_Package.ProductID, 
                      dbo.Rec_SalesOrder.StoresID
FROM         dbo.Rec_SalesOrder INNER JOIN
                      dbo.Rec_SalesOrder_Sub ON dbo.Rec_SalesOrder.ID = dbo.Rec_SalesOrder_Sub.ParentID INNER JOIN
                      dbo.Mer_Package ON dbo.Rec_SalesOrder_Sub.PackageID = dbo.Mer_Package.ID INNER JOIN
                      dbo.Mer_Product ON dbo.Mer_Package.ProductID = dbo.Mer_Product.ID
GROUP BY dbo.Rec_SalesOrder.OrderStatus, dbo.Mer_Package.Barcodes, dbo.Mer_Product.UserCode, dbo.Mer_Product.Name, CONVERT(datetime, 
                      CONVERT(varchar(20), dbo.Rec_SalesOrder.AutitDate, 111)), dbo.Rec_SalesOrder.StoresID, dbo.Mer_Package.ProductID
HAVING      (dbo.Rec_SalesOrder.OrderStatus = 0)

 

 是有的 可是就是查出来都是分着的

淘@淘 | 园豆:602 (小虾三级) | 2013-05-17 14:55

@淘@淘: 太乱了 看不出来查出来是什么样的  也没有表结构

芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 15:07

@芒果の冰: 

淘@淘 | 园豆:602 (小虾三级) | 2013-05-17 15:14

@淘@淘: 你肯定是有的列值不同 才没有办法 group by 的

芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 15:17

@芒果の冰: 什么意思,

淘@淘 | 园豆:602 (小虾三级) | 2013-05-17 15:21

@淘@淘: 你列不同值太多了 sql不知道与哪列合并

芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 15:53

@芒果の冰: 那像这样的我怎么才能在视图里去掉不用的“分组依据”呢,我只要去掉一个就都去掉了

淘@淘 | 园豆:602 (小虾三级) | 2013-05-17 16:06

@芒果の冰: 而且我前边的有查询条件,去掉“分组依据”就会报错了

淘@淘 | 园豆:602 (小虾三级) | 2013-05-17 16:09

@淘@淘: 你现在视图查出来是正确的

就好比你的 AutitDate 每行都不同 你让SQL怎么为你分组

AutitDate相同了Barcodes又不同了 没法给你划分到一起 

芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 16:14

@芒果の冰: 可是我现在不想根据那些分组,我只想根据ProductId这列分组,我要怎么办呢

淘@淘 | 园豆:602 (小虾三级) | 2013-05-17 16:15

@淘@淘: 

去掉多余的列 

芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 16:17

@芒果の冰: 那我别的列是需要显示的啊

淘@淘 | 园豆:602 (小虾三级) | 2013-05-17 16:19

@淘@淘: 

就你这四行数据 就算合并到一起 你AutitDate 要显示哪行的 TotleQuantity 要显示哪行的呢

芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 16:23

@芒果の冰: 

我的AutitDate 不显示,然后相同的TotleQuantity累加,根据ProductID分组

淘@淘 | 园豆:602 (小虾三级) | 2013-05-17 16:27

@淘@淘: 

充值金额     充值人    银行

26       张三     工商银行

24       张三     农商银行

现在我将两行合并得出 : 张三 充值了 50 元

此时页面上还要显示他这50元是从哪个银行冲的,你说你怎么显示

芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 16:27

@芒果の冰: 那就不显示银行嘛 就显示他冲50元

淘@淘 | 园豆:602 (小虾三级) | 2013-05-17 16:30

@淘@淘: 对啊 那你就不显示那些列啊 不就可以了

芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 16:44

@芒果の冰: 可是那时要求显示的列啊

淘@淘 | 园豆:602 (小虾三级) | 2013-05-17 16:47

@淘@淘: 你这不自相矛盾吗

芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 17:01

@淘@淘: 

充值金额     充值人    银行

26       张三     工商银行

24       张三     农商银行

现在我将两行合并得出 : 张三 充值了 50 元

现在老板要求显示50元是从哪个银行冲的

芒果の冰 | 园豆:187 (初学一级) | 2013-05-17 17:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册