如何在 SQL 服务器 CE 中将 SQL select 查询更改为新的 table?
How to Change SQL select query As new table in SQL Server CE?
这是我当前的 SQL 查询:
SELECT
SUM(CASE WHEN (DATEDIFF(day, tbl_debit.purchasedate, GETDATE()) >= 45)
THEN tbl_invoices.pendingamount ELSE 0 END) AS morethan45,
SUM(CASE WHEN (DATEDIFF(day, tbl_debit.purchasedate, GETDATE()) < 45)
THEN tbl_invoices.pendingamount ELSE 0 END) AS lessthan45
FROM
tbl_debit
INNER JOIN
tbl_invoices ON tbl_debit.invoice = tbl_invoices.invoice
WHERE
(tbl_invoices.state = - 1)
以上查询的输出如下所示:
morethan45 | lessthan45
750 | 710
我想创建一个新的 table,如下所示。是否可以创建如下所示的新内容
Column 1 | Column 2
morethan45 | 750
lessthan45 | 710
在group by
中使用case
:
SELECT (CASE WHEN (DATEDIFF(day, tbl_debit.purchasedate, GETDATE()) >= 45)
THEN 'MoreThan45'
ELSE 'LessThan45'
END) as Column1,
SUM(tbl_invoices.pendingamount) as Column2
FROM tbl_debit INNER JOIN
tbl_invoices
ON tbl_debit.invoice = tbl_invoices.invoice
WHERE tbl_invoices.state = -1
GROUP BY (CASE WHEN (DATEDIFF(day, tbl_debit.purchasedate, GETDATE()) >= 45)
THEN 'MoreThan45'
ELSE 'LessThan45'
END);
使用into
或insert
填充一个table。
相同的查询可以稍微改变一下以获得结果。
您可以添加一个新列来定义范围并在 Group by
中使用它,而不是根据条件聚合 pendingamount
SELECT CASE
WHEN Datediff(day, tbl_debit.purchasedate, Getdate()) >= 45 THEN 'morethan45'
ELSE 'lessthan45'
END AS [Column 1],
Sum(tbl_invoices.pendingamount) AS [Column 2]
FROM tbl_debit
INNER JOIN tbl_invoices
ON tbl_debit.invoice = tbl_invoices.invoice
WHERE tbl_invoices.state = -1
GROUP BY CASE
WHEN ( Datediff(day, tbl_debit.purchasedate, Getdate()) >= 45 ) THEN 'morethan45'
ELSE 'lessthan45'
END
这是我当前的 SQL 查询:
SELECT
SUM(CASE WHEN (DATEDIFF(day, tbl_debit.purchasedate, GETDATE()) >= 45)
THEN tbl_invoices.pendingamount ELSE 0 END) AS morethan45,
SUM(CASE WHEN (DATEDIFF(day, tbl_debit.purchasedate, GETDATE()) < 45)
THEN tbl_invoices.pendingamount ELSE 0 END) AS lessthan45
FROM
tbl_debit
INNER JOIN
tbl_invoices ON tbl_debit.invoice = tbl_invoices.invoice
WHERE
(tbl_invoices.state = - 1)
以上查询的输出如下所示:
morethan45 | lessthan45
750 | 710
我想创建一个新的 table,如下所示。是否可以创建如下所示的新内容
Column 1 | Column 2
morethan45 | 750
lessthan45 | 710
在group by
中使用case
:
SELECT (CASE WHEN (DATEDIFF(day, tbl_debit.purchasedate, GETDATE()) >= 45)
THEN 'MoreThan45'
ELSE 'LessThan45'
END) as Column1,
SUM(tbl_invoices.pendingamount) as Column2
FROM tbl_debit INNER JOIN
tbl_invoices
ON tbl_debit.invoice = tbl_invoices.invoice
WHERE tbl_invoices.state = -1
GROUP BY (CASE WHEN (DATEDIFF(day, tbl_debit.purchasedate, GETDATE()) >= 45)
THEN 'MoreThan45'
ELSE 'LessThan45'
END);
使用into
或insert
填充一个table。
相同的查询可以稍微改变一下以获得结果。
您可以添加一个新列来定义范围并在 Group by
pendingamount
SELECT CASE
WHEN Datediff(day, tbl_debit.purchasedate, Getdate()) >= 45 THEN 'morethan45'
ELSE 'lessthan45'
END AS [Column 1],
Sum(tbl_invoices.pendingamount) AS [Column 2]
FROM tbl_debit
INNER JOIN tbl_invoices
ON tbl_debit.invoice = tbl_invoices.invoice
WHERE tbl_invoices.state = -1
GROUP BY CASE
WHEN ( Datediff(day, tbl_debit.purchasedate, Getdate()) >= 45 ) THEN 'morethan45'
ELSE 'lessthan45'
END