我有一个调用Web Service的应用程序,我可能会将多达5个ID传递给此服务器并返回信息。具有多列的SQL COUNT
我在SQL表中创建一个'审计'行以保存提交的所有信息的记录。
该ID的可以按任意顺序提交,列
DLN0,DLN1,DLN2,DLN3,DLN4。
我也有DateTime和用户名列,我想尝试和做的是COUNT在任何给定日期在任何5列中输入ID的次数,因为我不希望有人提交与服务相同的ID超过两次(在任何给定的列中)。
我认为我可以通过UNION来完成,但这会让它变得非常混乱,或者这是唯一的出路吗?
CREATE TABLE [dbo].[MyL_Audit_Log](
[ID] [INT] IDENTITY(1,1) NOT NULL,
[Username] [VARCHAR](30) NOT NULL,
[IP Address] [VARCHAR](15) NOT NULL,
[RequestDT] [DATETIME] NOT NULL,
[TranType] [VARCHAR](20) NOT NULL,
[NoOfDrivers] [INT] NOT NULL,
[DLN0] [VARCHAR](30) NOT NULL,
[PCode] [VARCHAR](15) NULL,
[DLN1] [VARCHAR](30) NULL,
[DLN2] [VARCHAR](30) NULL,
[DLN3] [VARCHAR](30) NULL,
[DLN4] [VARCHAR](30) NULL,
[RequestString] [VARCHAR](MAX) NOT NULL,
[Result] [VARCHAR](30) NOT NULL,
[HttpStatusCode] [VARCHAR](10) NOT NULL,
[ResponseTime] [INT] NOT NULL,
[ReturnedData] [VARCHAR](MAX) NOT NULL,
PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
样品ID的
XYZ43562MC4 ABC23214MC2 LKU23411PO3
干杯:
我已经取得了一些成功
SELECT COUNT(MyTbl.DLN0) AS [Count], MyTbl.DLN0 AS [DLN], MyTbl.Username, CONVERT(VARCHAR(12),MyTbl.RequestDT,103) AS [DateTime] FROM
(
SELECT DLN0, [RequestDT], Username FROM dbo.MyL_Audit_Log
UNION
SELECT DLN1, [RequestDT], Username FROM dbo.MyL_Audit_Log
UNION
SELECT DLN2, [RequestDT], Username FROM dbo.MyL_Audit_Log
UNION
SELECT DLN3, [RequestDT], Username FROM dbo.MyL_Audit_Log
UNION
SELECT DLN4, [RequestDT], Username FROM dbo.MyL_Audit_Log
) AS MyTbl
WHERE MyTbl.DLN0 <> ''
GROUP BY MyTbl.DLN0, MyTbl.Username, CONVERT(VARCHAR(12),MyTbl.RequestDT,103)
我的表做到了这一点。
请您可以加入该结构的SQL定义和你试图查询? –
请问你可以发一些你会通过的样本ID – TheGameiswar
为什么你需要在这里工会?这个查询是否存在问题SELECT COUNT(MyTbl.DLN0)AS [Count],MyTbl.DLN0 AS [DLN],MyTbl.Username,CONVERT(VARCHAR(12),MyTbl.RequestDT,103)AS [DateTime] FROM dbo.MyL_Audit_Log as MyTbl WHERE MyTbl.DLN0 <>'' GROUP BY MyTbl.DLN0,MyTbl.Username,CONVERT(VARCHAR(12),MyTbl.RequestDT,103) –