一栏多栏
Multiple columns from one column
我跟踪客户发票的时效。
下面的代码示例returns 0 到 30 天之间的客户发票余额。
但是,我想 运行 一个查询,将单独的列拉入 Excel 用于每个客户的余额,分别为 0 到 30 天、31 到 60 天、61 到 90 天,最后超过 90 天天。
我希望将它拉入 Excel 所以列如下 -
客户编号、客户姓名、余额(30天以内)、余额(30-59天)、余额(60-90)、余额(90以上)
vtSql = ""
vtSql = vtSql & " SELECT CUSTNUM, CUSTNAME, SUM(BALANCE) "
vtSql = vtSql & " FROM VIEWALLINVOICES "
vtSql = vtSql & " WHERE BALANCE <> '0' AND INVDATE BETWEEN #" & Application.Text(Range("TODAY") - 30, "mm/dd/yyyy") & "# AND #" & Application.Text(Range("TODAY"), "mm/dd/yyyy") & "#"
vtSql = vtSql & " GROUP BY CUSTNUM, CUSTNAME "
vtSql = vtSql & " ORDER BY SUM(BALANCE) DESC;"
我正在使用 MS Access 数据库,我使用 ADODB 连接和“Microsoft.Jet.OLEDB.4.0”将其直接拉入 Excel。
您似乎需要条件聚合。在 MS-Access 中,您应该可以将其表述为:
SELECT CUSTNUM, CUSTNAME,
SUM(IIF(INVDATE BETWEEN DateAdd('d', -30, date()) AND date() , BALANCE, 0)) AS BALANCE_0_30,
SUM(IIF(INVDATE BETWEEN DateAdd('d', -60, date()) AND DateAdd('d', -31, date()), BALANCE, 0)) AS BALANCE_31_60,
SUM(IIF(INVDATE BETWEEN DateAdd('d', -90, date()) AND DateAdd('d', -61, date()), BALANCE, 0)) AS BALANCE_61_90,
SUM(IIF(INVDATE <= DateAdd('d', -91, date()) , BALANCE, 0)) AS BALANCE_OVER_91
FROM VIEWALLINVOICES
GROUP BY CUSTNUM, CUSTNAME
这通过偏移当前日期来动态计算日期范围 - 这就是我对你的问题的理解。
我跟踪客户发票的时效。
下面的代码示例returns 0 到 30 天之间的客户发票余额。
但是,我想 运行 一个查询,将单独的列拉入 Excel 用于每个客户的余额,分别为 0 到 30 天、31 到 60 天、61 到 90 天,最后超过 90 天天。
我希望将它拉入 Excel 所以列如下 -
客户编号、客户姓名、余额(30天以内)、余额(30-59天)、余额(60-90)、余额(90以上)
vtSql = ""
vtSql = vtSql & " SELECT CUSTNUM, CUSTNAME, SUM(BALANCE) "
vtSql = vtSql & " FROM VIEWALLINVOICES "
vtSql = vtSql & " WHERE BALANCE <> '0' AND INVDATE BETWEEN #" & Application.Text(Range("TODAY") - 30, "mm/dd/yyyy") & "# AND #" & Application.Text(Range("TODAY"), "mm/dd/yyyy") & "#"
vtSql = vtSql & " GROUP BY CUSTNUM, CUSTNAME "
vtSql = vtSql & " ORDER BY SUM(BALANCE) DESC;"
我正在使用 MS Access 数据库,我使用 ADODB 连接和“Microsoft.Jet.OLEDB.4.0”将其直接拉入 Excel。
您似乎需要条件聚合。在 MS-Access 中,您应该可以将其表述为:
SELECT CUSTNUM, CUSTNAME,
SUM(IIF(INVDATE BETWEEN DateAdd('d', -30, date()) AND date() , BALANCE, 0)) AS BALANCE_0_30,
SUM(IIF(INVDATE BETWEEN DateAdd('d', -60, date()) AND DateAdd('d', -31, date()), BALANCE, 0)) AS BALANCE_31_60,
SUM(IIF(INVDATE BETWEEN DateAdd('d', -90, date()) AND DateAdd('d', -61, date()), BALANCE, 0)) AS BALANCE_61_90,
SUM(IIF(INVDATE <= DateAdd('d', -91, date()) , BALANCE, 0)) AS BALANCE_OVER_91
FROM VIEWALLINVOICES
GROUP BY CUSTNUM, CUSTNAME
这通过偏移当前日期来动态计算日期范围 - 这就是我对你的问题的理解。