实在搞不定了,困难的集合查询实例!救命啊
有两个负责的集合语句,希望能将两语句合并在一起:
语句一:
SELECT tableinfo.TableNo,tableinfo.TableName TableName,
tableinfo.TableType,tableinfo.state,tableinfo.orderstate,
isnull(sum(opentable.qty),0) qty,tableinfo.TableName nameonly
FROM tableinfo
LEFT OUTER JOIN opentable ON tableinfo.TableNo = opentable.TableNo
and opentable.Issettle= 'N '
WHERE tableinfo.state <> '禁用 '
Group BY
tableinfo.TableNo,tableinfo.TableName,tableinfo.TableType,
tableinfo.state,tableinfo.orderstate
Order BY
right(space(10)+tableinfo.tableno,10)
说明:此查询结果为
TableNO,......,........, ..... , ...
----------------------
001001卡座占用未订5001
002002卡座占用未订10002
003003卡座占用未订5003
004004卡座占用未订15004
005005卡座占用未订3005
006006卡座空闲未订0006
007007卡座空闲未订0007
008008卡座空闲未订0008
语句二:
SELECT tableinfo.TableNo, UniteTable.Groupno,
sum( isnull(foodmoney,0)+isnull(methodprice,0) ) zje
FROM tableinfo
LEFT OUTER JOIN ChoiceMenu ON ChoiceMenu.TableNo = tableinfo.TableNo
AND
( ChoiceMenu.IsSettle = 'N ' ) AND
( ChoiceMenu.IsGiven = 'N ' ) AND (choiceMenu.qty -
choicemenu.delqty)> 0
LEFT OUTER JOIN UniteTable ON tableinfo.TableNo = UniteTable.Tableno
WHERE ( tableinfo.state = '占用 ' )
GROUP BY UniteTable.Groupno, tableinfo.TableNo
说明:此查询结果为
TableNO, ...., zje,
---------------------------
001NULL2100.00
002NULL2710.00
003NULL.00
004NULL10.00
005NULL980.00
A05NULL1130.00
A06NULL1160.00
A07NULL.00
A08NULL.00
AK2NULL7380.00
如何将语句二的 "zje " 结果 对应放在语句一的后面,并显示出来?
其语句的意义是:
语句一:列出所有符合条件的桌台号,同时显示每已开台的客人数量,未开台的显示0
语句二:列出当前桌台号的消费总额(没有消费的台号金额不显示或显示0)
最终意义是:
列出所有符合条件的桌台号,对于已经开台的桌台号,累计出该桌台的消费金额。
求大侠救命啊!!
[解决办法]
select a.*, b.zje from
(SELECT tableinfo.TableNo,tableinfo.TableName TableName,
tableinfo.TableType,tableinfo.state,tableinfo.orderstate,
isnull(sum(opentable.qty),0) qty,tableinfo.TableName nameonly
FROM tableinfo
LEFT OUTER JOIN opentable ON tableinfo.TableNo = opentable.TableNo
and opentable.Issettle= 'N '
WHERE tableinfo.state <> '禁用 '
Group BY
tableinfo.TableNo,tableinfo.TableName,tableinfo.TableType,
tableinfo.state,tableinfo.orderstate
Order BY
right(space(10)+tableinfo.tableno,10)) a,
(SELECT tableinfo.TableNo, UniteTable.Groupno,
sum( isnull(foodmoney,0)+isnull(methodprice,0) ) zje
FROM tableinfo
LEFT OUTER JOIN ChoiceMenu ON ChoiceMenu.TableNo = tableinfo.TableNo
AND
( ChoiceMenu.IsSettle = 'N ' ) AND
( ChoiceMenu.IsGiven = 'N ' ) AND (choiceMenu.qty -
choicemenu.delqty)> 0
LEFT OUTER JOIN UniteTable ON tableinfo.TableNo = UniteTable.Tableno
WHERE ( tableinfo.state = '占用 ' )
GROUP BY UniteTable.Groupno, tableinfo.TableNo) b
where a.TableNO = b.TableNO
[解决办法]
select a.*,b.zje from
(SELECT tableinfo.TableNo,tableinfo.TableName TableName,
tableinfo.TableType,tableinfo.state,tableinfo.orderstate,
isnull(sum(opentable.qty),0) qty,tableinfo.TableName nameonly
FROM tableinfo
LEFT OUTER JOIN opentable ON tableinfo.TableNo = opentable.TableNo
and opentable.Issettle= 'N '
WHERE tableinfo.state <> '禁用 '
Group BY
tableinfo.TableNo,tableinfo.TableName,tableinfo.TableType,
tableinfo.state,tableinfo.orderstate)a
left join
(SELECT tableinfo.TableNo, UniteTable.Groupno,
sum( isnull(foodmoney,0)+isnull(methodprice,0) ) zje
FROM tableinfo
LEFT OUTER JOIN ChoiceMenu ON ChoiceMenu.TableNo = tableinfo.TableNo
AND
( ChoiceMenu.IsSettle = 'N ' ) AND
( ChoiceMenu.IsGiven = 'N ' ) AND (choiceMenu.qty -
choicemenu.delqty)> 0
LEFT OUTER JOIN UniteTable ON tableinfo.TableNo = UniteTable.Tableno
WHERE ( tableinfo.state = '占用 ' )
GROUP BY UniteTable.Groupno, tableinfo.TableNo)b
on a.TableNo=b.TableNo
Order BY Right(space(10)+a.TableNo,10)