c# - 使用联合查询创建报告
问题描述
我有 2 个表格SALM(Sales table)
已经提交BillNo,Date,Amount,CusId
并CUSMAS(Customer table)
具有ID,CustomerName
。我想创建一个报告(在日期之间),上面有日期,下面是那个日期的销售细节(来自 SALM),然后是下面那个日期的总销售额。
输入:从日期和到日期
我试过这个查询:
(SELECT DISTINCT SALM.INVDATE AS RES1,'' AS RES2 ,'' AS RES3 FROM SALM
WHERE SALM.INVDATE BETWEEN #01-Jan-2018# AND #01-Mar-2019# ORDER BY
SALM.INVDATE) UNION (SELECT SALM.ORDNO AS RES1, ACCMAS.ACCNAME AS RES2,''
AS RES3 FROM SALM INNER JOIN ACCMAS ON SALM.CUSTCODE = ACCMAS.ID WHERE
SALM.INVDATE BETWEEN #01-Jan-2018# AND #01-Mar-2019# ORDER BY SALM.INVDATE
UNION select SUM(SALM.AMOUNT) AS RES1, sum(SALM.TAX) AS RES2,
sum(SALM.NTVALUE) AS RES3 FROM SALM WHERE SALM.INVDATE
BETWEEN #01-Jan-2018# AND #01-Mar-2019# group by SALM.INVDATE );
但结果没有达到我需要的格式
报告格式如图
解决方案
您将无法仅在一个 SQL 表达式中执行此操作。
当您使用 T-SQL (MSSSQL) 时,您可以将此表达式用于一个给定的日期。
SELECT '' AS 'Bill No.', CONCAT('Date: ', '03.04.2018') AS 'Customer Name', '' AS 'Amount'
UNION ALL
SELECT CONVERT(varchar, BillNo), CustomerName, CONVERT(varchar, Amount)
FROM SALM LEFT JOIN CUSMAS ON SALM.CusId = CUSMAS.Id WHERE Date = '3.4.2018'
UNION ALL
SELECT '', 'Cash Total', 'don''t know what you want in herer'
UNION ALL
SELECT '', 'Credit Total', 'don''t know what you want in herer'
UNION ALL
SELECT '', 'Day Total', CONVERT(varchar, SUM(Amount))
FROM SALM LEFT JOIN CUSMAS ON SALM.CusId = CUSMAS.Id WHERE Date = '3.4.2018'
然后你可以在 C# 中通过所有可能的循环来执行此操作,DateTimes
并为每个DateTime
.
当您只想调用一个 SQL 函数时,您需要创建一个FUNCTION
返回表的函数。您可以在此处阅读有关此内容的更多信息。
CREATE FUNCTION GetMyReport(@from DATETIME, @to DATETIME)
RETURNS @result TABLE
(
BillNo VARCHAR,
CustomerName VARCHAR,
Amount VARCHAR
)
BEGIN
--FILL YOUR TABLE HERE
END;
推荐阅读
- angular - 如何使用 HTTP 请求触发 Firebase 函数以从多个节点读取数据?
- python - 从一串文本中获取三元组
- android - 为什么我们只能在“onDrawFrame”方法中使用 GLSurfaceView 上的快照?否则,它将以黑色空图像结束
- node.js - 当我在编辑个人资料中更新密码时进行预更新
- php - URL 生成删除端口
- java - 如何为这个片段转换设置动画
- php - 使用干预包压缩图像。我的图像没有被压缩,仍然是相同的大小
- python - 垂直组合轮廓并获得凸包 - opencv - python
- r - 最大特异性和灵敏度的逻辑回归的截止值
- php - 单击按钮后添加数字