作者mywheat (麦田)
看板Database
标题[SQL ] 请教语法的撰写..
时间Thu Apr 23 05:15:49 2009
资料库: MS SQL 2008 Express
OS : windows XP
我有二个表格,分别为 GList, GType
[GList 栏位]
GId int '(key)
GTypeId int ' 货物的 id
IoDate Date ' 进出日期
IoCnt Int ' 进出量
IsUp Bit ' 是否有效, 1 为有效
资料:
GId GTypeId IoDate IoCnt IsUp
1 1 2009/4/20 14 1
2 2 2009/4/20 5 1
3 3 2009/4/20 6 1
4 1 2009/4/20 -4 1
5 1 2009/4/21 -1 0
6 3 2009/4/22 2 1
7 2 2009/4/23 3 1
8 1 2009/4/23 4 1
[GType 栏位]
GTypeId int ' 货物的id (key)
GTypeName nvarchar ' 货物名称
资料:
GTypeId GTypeName
1 AAAA
2 BBBB
3 CCCC
我想要查输入货物id与日期范围,就可以列出这货物这些天的每天进出小计表,
也必须是有效资料。另外,如果在日期范围内没有进出,也要列 0
如, 输入GTypeId = 1, 日期(IoDate)范围 between 2009/4/20 and 2009/4/22
列出来资料应该是这样
名称 日期 进出
AAA 2009/4/20 10
AAA 2009/4/21 -1
AAA 2009/4/22 0
请教各位前辈,这样的语法该怎麽写呢?
我写到这样,想不出该怎麽写了,特别是那每天列出的部分
SELECT SUM(GList.IoCnt) AS cnt, GList.IoDate, GType.GTypeName
FROM GList
INNER JOIN GType ON GList.GTypeId = GType.GTypeId
WHERE (GList.GId = 1) AND
(GList.IoDate >= '2009/4/20') AND (GList.IoDate <= '2009/4/22')
GROUP BY GList.IoDate, GType.GTypeName
ORDER BY GList.IoDate
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.144.208
1F:推 silver8250:WHERE (GList.GId=1) 先改为 WHERE (GList.GTypeId=1) 04/23 10:44