早上好SQL专业人员,
它是关于使用MS SQL 2012动态创建复杂SQL查询。为了更好地理解,任务描述被抽象/简化。 以下示例将解决该问题,但不起作用:
Select
Left (Kunden ,10) AS Result01,
Right (Result01,5) AS Result02
from tbl_Kunden
请注意:我想使用" Left"的结果。功能在"右"函数(左和右只是几个其他函数的占位符)。但是,这是由于错误:列名称无效' Result01'。 有没有人知道如何创建一个dyn。 SQL查询,以便我可以在后续函数中使用先前插入的命名字段?
先谢谢,henuit
答案 0 :(得分:0)
使用子查询:
DataTable dtbs = new DataTable();
DataView dvbs = new DataView(dt);
dvbs.RowFilter = "ColumnName='Filtervalue'";
dtbs = dvbs.ToTable();
答案 1 :(得分:0)
假设第一个函数的输出与第二个函数的输入兼容,你可以这样做。
Select
Left (Kunden ,10) AS Result01,
Right (Left (Kunden ,10),5) AS Result02
from tbl_Kunden
本质上,SQL将评估从语句的最内层嵌套到最外层语句的语句,因此嵌套语句应该可以使您获得所需的位置。现在,如果内部最大或任何内部语句的输出与封装功能不兼容,您可能需要合并嵌套的前1选项或转换,但不知道该过程的完整故事是不可能的说出你可能需要做什么。
/ ********************************************编辑***************** ************************************************** ********** / 根据你最近的评论,我建议使用一个声明。这些将在where子句和查询完成后进行评估。用于评估聚合函数。我会对使用这种技术感到困惑,因为它在处理极大数据集时会产生负担,因为它在查询完成后执行。
select foo, count(bar)
from table
where value = value
group by foo
having count(bar) >= number
这将允许您评估所选值而不将其放在子查询中。这可能会或可能不会解决您的所有问题,但在必要时确实可以达到目的。