这里的总和是我当前的查询:我需要提高我的T-SQL查询,这样我可以返回列
SELECT patron_name,
producer.federal_number,
hst_number,
average_bf_test,
(SELECT MAX(s.statement_number) FROM statement s) AS statement_number,
(SELECT MAX(s.period_ending) FROM statement s) AS period_ending
FROM producer
JOIN producer_details ON producer.federal_number = producer_details.federal_number
JOIN statement ON producer.patron_number = statement.patron_number
WHERE producer.patron_number = @PatronNo
我需要改善它,这样我可以取回钱列的总和在我的 '支付' 表:
quota_payment (money)
total_deductions (money)
net_cheque_or_direct_deposit (money)
interim_payment (money)
final_payment (money)
statement_number (int) (FK) (statement_number is the primary key in the statement table)
按@ Quassnoi的要求,这里是样本数据和@ Quassnoi的查询输出:
producer Table:
patron_number patron_name federal_number
20109 A. Beaton 44373
producer_details Table:
federal_number hst_number average_bf_test
44373 R999999999 0.0392
statement Table:
statement_number period_ending description amount_shipped patron_number
386 2009/07/30 Quota Milk Shipped 32.91 20109
387 2009/11/30 Quota Milk Shipped 22.34 20109
payment Table:
quota_payment total_deductions net_cheque_or_direct_deposit interim_payment
22872.5800 7526.6500 15345.9300 6520.7000
18474.3400 4563.2300 13911.1100 3220.3000
final_payment statement_number
8825.2300 386
10690.8100 387
这是@ Quassnoi查询返回的数据(最初第二行是钱列的NULL,但事实证明,那是因为当时付款表中只有一行,但我已经因为增加了一个额外的行):
patron_name federal_number hst_number average_bf_test
A. Beaton 44373 R999999999 0.0392
A. Beaton 44373 R999999999 0.0392
statement_number period_ending quota_payment total_deductions
387 2009/11/30 22872.5800 7526.6500
387 2009/11/30 18474.3400 4563.2300
net_cheque_or_direct_deposit interim_payment final_payment
15345.9300 6520.7000 8825.2300
13911.1100 3220.3000 10690.8100
这里是希望的记录:
patron_name federal_number hst_number average_bf_test
A. Beaton 44373 R999999999 0.0392
statement_number period_ending quota_payment total_deductions
387 2009/11/30 41346.92 12089.88
net_cheque_or_direct_deposit interim_payment final_payment
29257.04 9741.00 19516.04
我忘了提,为了钱列的和值应该是“今年迄今为止”值(意值从前一年起将不会包含在SUM结果中),这使得它更加复杂一些。
我需要支付表中的每个钱列保留在返回结果中的单独列,但查询应返回每列的所有行的总和。 – brookmarker 2010-08-25 15:19:37
我认为我的答案是做你想做的,但是,你的原始查询做你想要的?看起来好像您需要关于@PatronNo的信息,但是当您获得MAX语句时,您将从任何patron_number获得最大语句。我不确定那是你想不想或者我不理解你正确查询。 – kralco626 2010-08-25 15:29:26
是的,我的原始查询确实做了我想要的。我需要检索max statement_number和period_ending – brookmarker 2010-08-25 15:42:29