X
xebaobei
Unregistered / Unconfirmed
GUEST, unregistred user!
SELECT 名称, 物品编号, SUM(数量) AS 数量, 价格, 数量 * 价格 AS 总金额, 用户级别
FROM (SELECT 名称, 物品编号, 数量, 价格, 价格 * 数量 AS 总金额, 用户级别, 日期
FROM (SELECT 历史表.名称, 历史表.物品编号, SUM(历史表.数量) AS 数量,
密码表.用户级别, AVG(历史表.价格) AS 价格,
SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 1, 4)
+ '年' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 6, 2)
+ '月' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 9, 2)
+ '日' AS 日期
FROM 历史表 INNER JOIN
密码表 ON 历史表.操作员 = 密码表.真实姓名
WHERE (历史表.名称 IN
(SELECT 品名
FROM z库存物品表))
GROUP BY 历史表.名称, 历史表.物品编号, 密码表.用户级别,
SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 1, 4)
+ '年' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 6, 2)
+ '月' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 9, 2)
+ '日'
UNION ALL
SELECT 历史表.名称, 历史表.物品编号, SUM(历史表.数量) AS 数量,
密码表.用户级别, AVG(历史表.价格) AS 价格,
SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 1, 4)
+ '年' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 6, 2)
+ '月' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 9, 2)
+ '日' AS 日期
FROM 历史表 INNER JOIN
密码表 ON 历史表.操作员 = 密码表.真实姓名
WHERE (历史表.名称 IN
(SELECT 菜名
FROM z菜品配料))
GROUP BY 历史表.名称, 历史表.物品编号, 密码表.用户级别,
SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 1, 4)
+ '年' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 6, 2)
+ '月' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 9, 2) + '日')
DERIVEDTBL) DERIVEDTBL
WHERE (日期 >= '2003年08月01日') AND (日期 <= '2003年09月13日') AND
(用户级别 = '经理')
GROUP BY 名称, 物品编号, 价格, 用户级别, 数量
ORDER BY 用户级别, 物品编号
上边语句的结果是
名称 物品编号 数量 价格 总金额 用户级别
鸳鸯锅 101 1 20 20 经理
鸳鸯锅 101 3 20 60 经理
花河啤酒 901 5 2.5 12.5 经理
花河啤酒 901 8 2.5 20 经理
花河啤酒 901 295 2.5 737.5 经理
上边我明明 SUM(数量) AS 数量 了~但是结果还是没有求和
我知道是因为我后边
GROUP BY 名称, 物品编号, 价格, 用户级别, 数量
有个数量~
数量不一样的分组~
但是我也不想要那个group by 数量
因为一拿下去就出错误了~
说数量不包含在聚合函数中
谢谢了`
SQLSERVER 2000
FROM (SELECT 名称, 物品编号, 数量, 价格, 价格 * 数量 AS 总金额, 用户级别, 日期
FROM (SELECT 历史表.名称, 历史表.物品编号, SUM(历史表.数量) AS 数量,
密码表.用户级别, AVG(历史表.价格) AS 价格,
SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 1, 4)
+ '年' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 6, 2)
+ '月' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 9, 2)
+ '日' AS 日期
FROM 历史表 INNER JOIN
密码表 ON 历史表.操作员 = 密码表.真实姓名
WHERE (历史表.名称 IN
(SELECT 品名
FROM z库存物品表))
GROUP BY 历史表.名称, 历史表.物品编号, 密码表.用户级别,
SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 1, 4)
+ '年' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 6, 2)
+ '月' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 9, 2)
+ '日'
UNION ALL
SELECT 历史表.名称, 历史表.物品编号, SUM(历史表.数量) AS 数量,
密码表.用户级别, AVG(历史表.价格) AS 价格,
SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 1, 4)
+ '年' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 6, 2)
+ '月' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 9, 2)
+ '日' AS 日期
FROM 历史表 INNER JOIN
密码表 ON 历史表.操作员 = 密码表.真实姓名
WHERE (历史表.名称 IN
(SELECT 菜名
FROM z菜品配料))
GROUP BY 历史表.名称, 历史表.物品编号, 密码表.用户级别,
SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 1, 4)
+ '年' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 6, 2)
+ '月' + SUBSTRING(CONVERT(varchar, 历史表.日期, 120), 9, 2) + '日')
DERIVEDTBL) DERIVEDTBL
WHERE (日期 >= '2003年08月01日') AND (日期 <= '2003年09月13日') AND
(用户级别 = '经理')
GROUP BY 名称, 物品编号, 价格, 用户级别, 数量
ORDER BY 用户级别, 物品编号
上边语句的结果是
名称 物品编号 数量 价格 总金额 用户级别
鸳鸯锅 101 1 20 20 经理
鸳鸯锅 101 3 20 60 经理
花河啤酒 901 5 2.5 12.5 经理
花河啤酒 901 8 2.5 20 经理
花河啤酒 901 295 2.5 737.5 经理
上边我明明 SUM(数量) AS 数量 了~但是结果还是没有求和
我知道是因为我后边
GROUP BY 名称, 物品编号, 价格, 用户级别, 数量
有个数量~
数量不一样的分组~
但是我也不想要那个group by 数量
因为一拿下去就出错误了~
说数量不包含在聚合函数中
谢谢了`
SQLSERVER 2000