2
我要总结的是持有在一个循环中值的变量一个变量的多个值,总和
这里是我的表:
name | pkey | cinema1~cinema10 | total_QTy | total_sales
aaa | 1 | 100.00 ~ 200.00 | 2 | 300.00
bbb | 2 | 150.00 ~ 145.00 | 3 | 295.00
total_Qty是门票的电影1买总和〜cinema10对于名称aaa ,我不知道如何做到这一点。我只获得名为bbb cinema10的计票的最后一个值。
请帮助我。我被困在这里。
这里是我得到的金额和数量的代码
WHILE ISNULL(@cinema_key, 0) <> 0
BEGIN
SET @amount = 0
SELECT @amount =(SUM(t1.price)), @qty = (count(t1.cnt))
FROM(
SELECT
(ISNULL(SUM(mctrs.price),0) - (ISNULL(SUM(mctrs.lgu_tax_amount),0) + ISNULL(SUM(mctrs.ordinance_1),0) + ISNULL(SUM(mctrs.ordinance_2),0)+ ISNULL(SUM(mctrs.ordinance_3),0) + ISNULL(SUM(mctrs.ordinance_4),0))) AS 'price',
count(mctrs.[key]) as 'cnt', mctrs.[key] as ckey
FROM
movie_calendar mc
INNER JOIN
movie_database md
ON
mc.movie_key = md.[key] AND mc.screening_start_date = @tdate
INNER JOIN
cinemas c
ON
mc.cinema_key = c.[key] AND c.[key] = @cinema_key
INNER JOIN
movie_calendar_times mct
ON
mct.movie_calendar_key = mc.[key]
LEFT OUTER JOIN
movie_calendar_time_reserved_seats mctrs
ON
mctrs.movie_calendar_time_key = mct.[key]
INNER JOIN
patrons p
ON
mctrs.patron_key = p.[key]
WHERE mctrs.status = 1 AND mctrs.[committed]=1
GROUP BY p.patron_tag,mctrs.price,P.APPLY_LGU_TAX ,P.LGU_TAX_AMOUNT, mctrs.[key]
)t1
SET @buffer = 'UPDATE #temptable SET cinema'+CAST(@count AS VARCHAR)+' = '+CAST(ISNULL(sum(@amount),0) AS VARCHAR)+' WHERE [date] = '''+CAST (@tdate AS VARCHAR)+''''
PRINT (@buffer)
EXEC(@buffer)
insert into #tqty(qty) values(@qty)
DELETE FROM #cinema_list WHERE cinema_key = @cinema_key
SET @cinema_key = NULL
SET @cinema_code = NULL
SELECT TOP 1 @cinema_key = cinema_key, @cinema_code = cinema_code FROM #cinema_list ORDER BY display_order
SET @count = @count + 1
END /*WHILE CINEMA KEY*/
,这里是我的更新total_Qty和TOTAL_SALES代码:
WHILE @count < @cinema_count
BEGIN
SET @count = @count+1.
SET @select = @select+'cinema'+CAST(@count AS VARCHAR)+'+'
END
SET @select = SUBSTRING(@select, 1, LEN(@select) - 1)
SET @buffer = 'UPDATE #temptable SET total_quantity = ' +cast(@qty as varchar) + ', ' + 'total_sales = '[email protected]
PRINT @buffer
EXEC(@buffer)
请帮助:3个谢谢:)
什么是 “电影1〜cinema10” 的含义是什么? – Bohemian
抱歉,cinema1〜cinema10是一个动态栏目,电影院的数量取决于数据库。 – Dakoy
嗨@Dakoy:对不起,指出这一点,但使用“动态”列(cinema1,cinema2,...)几乎总是在SQL数据库设计中做错事。任何可以将结构更改为“Cinema_id”和“Price”的行包含(“1”,100)(“10”,200)?这会让这个问题变得很琐碎:SELECT cinema_id,由cinema_id从tablex组中总结(价格)。即使你不能改变内部结构,在报告和分析之前准备适当的结构也是有意义的......即使是暂时的。 –