我正在使用SQL-Server 2008.我需要组合相同的行并在以下情况下Name增加计数器:
Id's同样Name是1或更多blankId是,则不合并行NULL!Name但不同的行,则不合并行Ids目前输出:
Name Id Cnt
John 1 1
Peter 2 2 -- This Peter with the same Id have 2 entries so Cnt = 2
Peter 3 1 -- This is other Peter with 1 entry so Cnt = 1
Lisa 4 1
Lisa NULL 1
David 5 1
David 1 -- here Id is blank ''
Ralph 2 -- Ralph …Run Code Online (Sandbox Code Playgroud) 我的原始查询有点复杂,但我要做的是获取实体AlertCondition以及一些其他字段.
+ " SELECT new org.rhq.core.domain.alert.composite.AlertConditionEventCategoryComposite " //
+ " ( " //
+ " ac, " //
+ " res.id " //
+ " ) " //
+ " FROM AlertCondition AS ac FETCH ALL PROPERTIES " //
+ " JOIN ac.alertDefinition ad " //
+ " JOIN ad.resource res " //
+ " WHERE " + AlertCondition.RECOVERY_CONDITIONAL_EXPRESSION //
+ " AND ( res.agent.id = :agentId OR :agentId IS NULL ) " //
+ " AND ad.enabled = TRUE …Run Code Online (Sandbox Code Playgroud) 交代
想象一下,这里有3家公司.我们正在加入表格Name,因为不是每个员工都提供了他的PersonalNo.StringId只有专家,所以也不能用于加盟.同一名员工可以在多家公司工作.
问题
问题是可能存在具有相同名称的不同员工(具有相同的名字和姓氏,在示例中仅提供名字).
我需要的?
1数据有问题时返回,0如果正确.
检测问题的规则
PersonalNo而不是所有人都有StringId(如彼得)应该返回1(这是错误的)NULL(见约翰),但它们都有相同StringId它应该返回0(这是正确的,这意味着没有提供的公司之一PersonalNo)PersonalNo都是相同的并且都是相同的StringId(参见Lisa)它应该返回0(正确)PersonalNo而且全部StringId提供它应该是这样的:我们看到这里有两个不同的人Jennifer 4805250141 PersonalNo和Jennifer一起4920225088 PersonalNo,Jennifer 和Jennifer NULL PersonalNo一样StringId有4920225088 PersonalNo它应该返回0( …交代
想象一下,我有2张桌子.FormFields其中存储列名作为值,应该是旋转的,第二个表FilledValues是用户提供的填充值FormFieldId.
问题
正如您在表格中看到的(在SAMPLE部分下面),FormFields我有重复的名称,但ID不同.我需要在连接表之后制作它,表中的所有值FilledValues都将被分配到列名,而不是Id.
我需要的更好,您将在下面的OUTPUT部分看到.
样本数据
FormFields
ID Name GroupId
1 col1 1
2 col2 1
3 col3 1
4 col1 2
5 col2 2
6 col3 2
Run Code Online (Sandbox Code Playgroud)
FilledValues
ID Name FormFieldId GroupID
1 a 2 1
2 b 3 1
3 c 1 1
4 d 4 2
5 e 6 2
6 f 5 2
Run Code Online (Sandbox Code Playgroud)
现在输出
col1 col2 col3
c a b -- As …Run Code Online (Sandbox Code Playgroud) 如果列中的所有行都为空(空白),我需要隐藏列.
在这种情况下col3应该隐藏,因为列中没有值.
col1 col2 col3
v1 v4
v2
v3
Run Code Online (Sandbox Code Playgroud)
我在columns Hidden属性上使用以下表达式:
=IIF(Fields!Test5.Value = "",TRUE,FALSE)
这个表达式工作,但它隐藏了每个空白(空)字段,甚至所有列都不为空.只有在根本没有值时才应该隐藏列.
我是SQL的新手,可以用手.我在SELECT语句中得到以下错误:
SUM(Cast((replace(replace(replace (p.[Total Sales], '$', ''), '(','-'), ')','')) as money)) - SUM(Cast((replace(replace(replace (p.[Total Cost], '$', ''), '(','-'), ')','')) as money)) / SUM(Cast((replace(replace(replace (p.[Total Sales], '$', ''), '(','-'), ')','')) as money)) as new_bal
Run Code Online (Sandbox Code Playgroud)
我知道我需要使用CASE,但我不确定应用程序.
我很难找到解决这个问题的方法,因为搜索合并SQL列或从表中添加列会产生我不想要的各种结果.用一个例子说明我就容易多了.
我有两张桌子:
表格1
ColA ColB ColC
0 A AL
1 B DZ
Run Code Online (Sandbox Code Playgroud)
表2
ColA ColB ColC
2 C IS
3 D KA
Run Code Online (Sandbox Code Playgroud)
我想合并这些表,以便基本上组合相似的列,所以我有一个具有相同结构和所有值的新表.所以输出将是:
产量
ColA ColB ColC
0 A AL
1 B DZ
2 C IS
3 D KA
Run Code Online (Sandbox Code Playgroud)
问题是我想从两个结构相似的表中找到这些列的不同值,所以我看不出如何使用连接,就好像我加入任何一个值,其他值将丢失,以及多个-field join似乎不起作用.
我需要ORDER BY在执行时使用子句sp_executesql.
我试过跟随,但没有成功:
1.
EXEC Sp_executesql @query + 'ORDER BY myChoice', N'@param1 TINYINT, @param2 NVARCHAR(60)', @param1, @param2
Run Code Online (Sandbox Code Playgroud)
2.
EXEC Sp_executesql @query ORDER BY myChoice, N'@param1 TINYINT, @param2 NVARCHAR(60)', @param1, @param2
Run Code Online (Sandbox Code Playgroud)
3.
EXEC Sp_executesql @query, N'@param1 TINYINT, @param2 NVARCHAR(60)', @param1, @param2 + 'ORDER BY myChoice'
Run Code Online (Sandbox Code Playgroud)
有你的想法吗?我的语法不正确.
我找不到问题.我有很多桌子相互连接.我需要从FormInstances表中计算表单实例(应该计数Id列),但它会撤回错误的数据.
所以我的查询看起来像:
DECLARE @dateStart DATE = NULL,
@dateEnd DATE = NULL,
@workshop NVARCHAR(60) = '',
@shiftNr NVARCHAR(60) = '',
@article NVARCHAR(60) = '',
@controllier NVARCHAR(60) = 'Name of Controlier'
SELECT COUNT(FI.Id) AS [Count of Instances]
FROM FormInstances AS FI
LEFT JOIN FormFields AS FF
ON FI.FormVersionId = FF.FormVersionid
LEFT JOIN .....
WHERE
FF.Id = FV.FormFieldId AND
FI.Id = ...
Run Code Online (Sandbox Code Playgroud)
现在输出:
Count of Instances
414400
414400
414400
414400
384800
Run Code Online (Sandbox Code Playgroud)
输出应该是:
Count of Instances
5
Run Code Online (Sandbox Code Playgroud)
如果我传递给SELECT子句: …
我正在为Facebook开发应用程序。此处应检查用户打开应用程序时是否数据库中已存在用户。我想我会$_SESSION用来将用户的 ID传递给checkIfExsists.php
所以我的FacebookGetId.php看起来像:
<?php
...
$id = $user_profile['id'];
$_SESSION['id'] = $id;
?>
Run Code Online (Sandbox Code Playgroud)
所以$id现在是 ie'12345'我只是不知道如何自动重定向checkIfExsists.php到检查该 ID 是否已经存在于数据库中。
它应该是这样的:当应用程序启动时,它应该采用用户的 Id并自动重定向到checkIfExsists.php并传递该 Id。
如果用户存在checkIfExsists.php应该将用户重定向到application.php,如果不存在 - 它应该重定向到registration.php
我有表单,这里是复选框,如何将值从复选框传递给PHP?例如:如果选中复选框则传递1,如果未选中0.
我正在使用以下内容:
<input type="checkbox" name="letter" value="letter" id="letter" checked="checked">
Run Code Online (Sandbox Code Playgroud)
这是我的表格:
<form class="form" method="post" action="GetFbId.php">
<h2>Registration</h2><hr/>
<label>First Name: </label>
<input type="text" name="first_name" id="first_name" required>
<label>Last Name: </label>
<input type="text" name="last_name" id="last_name" required>
<label>City: </label>
<input type="text" name="city" id="city" required>
<label>Email: </label>
<input type="text" name="email" id="email" required><br>
Accept to get letters
<input type="checkbox" name="letter" value="letter" id="letter" checked="checked">
<input type="submit" name="register" id="register" value="Register">
</form>
Run Code Online (Sandbox Code Playgroud) 如果用户输入800 @WorkShop,则应返回所有具有800个车间ID和900个车间ID的记录.
如果用户传递任何其他ID,@WorkShop它应该只返回选择@WorkShopId的记录.
我试过以下:
SELECT *
FROM Test
WHERE Workshop IN (
CASE
WHEN @WorkShop = N'800' THEN N'900' AND N'800'
ELSE @WorkShop
END
)
Run Code Online (Sandbox Code Playgroud)
这会返回一个错误:
Incorrect syntax near the keyword 'and'.
Run Code Online (Sandbox Code Playgroud)
所以总之如果用户传递800作为@WorkShop参数它应该返回如下内容:
Workshop IN ('800', '900')
Run Code Online (Sandbox Code Playgroud)