Program.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. /// <summary>
  8. /// 测试用例
  9. /// </summary>
  10. namespace TestCase
  11. {
  12. class Program
  13. {
  14. static System.Data.DataSet dataSet = null;
  15. public static SQLHelper.ConnectionParameters Parameters { get; set; } = new SQLHelper.ConnectionParameters();
  16. static void Main( string[] args )
  17. {
  18. // 打开一个数据库;
  19. OpenDatabase();
  20. // 初始化数据库连接串;
  21. InitConnection();
  22. // 分离数据库(不需要admin权限);
  23. //Parameters.DetachDatabase("db");
  24. // 附加数据库(程序需要使用admin权限运行, 否则附加失败);
  25. //Parameters.AttachDatabase("db", @"E:\lyfzClassicSoft\服务端\数据\db.mdf", @"E:\lyfzClassicSoft\服务端\数据\db_log.LDF");
  26. /*
  27. // 不参数化的sql语句;
  28. QueryWithCommandText();
  29. // 参数化的sql语句;
  30. QueryWithParameters();
  31. // 表是否存在;
  32. if ( IsTableExists("dindan") )
  33. Console.WriteLine("表存在");
  34. else
  35. Console.WriteLine("表不存在");
  36. // 表字段是否存在;
  37. if ( IsColumnExists("dindan", "id1") )
  38. Console.WriteLine("表字段存在");
  39. else
  40. Console.WriteLine("表字段不存在");
  41. // 视图是否存在;
  42. if ( IsViewExists("dindanclient1") )
  43. Console.WriteLine("视图存在");
  44. else
  45. Console.WriteLine("视图不存在");
  46. */
  47. //Test("Development", "lowdb");
  48. //Test("Development", "lowdb2");
  49. //Test2("Development", "lowdb");
  50. //Test2("Development", "lowdb2");
  51. //Test3("Development", "lowdb", "select * from Vw_OrderReport where Ord_Type in ('0','1','2') and (取件状态 is null or 取件状态 in (0,1))");
  52. //Test3("Development", "lowdb", "select * from Vw_OrderProcessCustomer");
  53. //Test3("Development", "lowdb2", "select * from Vw_OrderReport where Ord_Type in ('0','1','2') and (取件状态 is null or 取件状态 in (0,1))");
  54. //Test3("Development", "lowdb2", "select * from Vw_OrderProcessCustomer");
  55. //Test3("192.168.1.19,1433", "LYFZERPDB", "select * from Vw_OrderReport where Ord_Type in ('0','1','2') and (取件状态 is null or 取件状态 in (0,1))");
  56. //Test3("192.168.1.19,1433", "LYFZERPDB", "select * from Vw_OrderProcessCustomer");
  57. Test5("Development", "Platinum");
  58. // 结束程序;
  59. Console.ReadKey();
  60. }
  61. /// <summary>
  62. /// 打开一个数据库连接;
  63. /// </summary>
  64. public static void OpenDatabase()
  65. {
  66. // 创建连接参数对象, 并初始所有参数;
  67. SQLHelper.ConnectionParameters parameters = new SQLHelper.ConnectionParameters();
  68. // 数据库服务地址;
  69. parameters.DatabaseServer = "127.0.0.1";
  70. // 数据库服务地址端口号;
  71. parameters.DatabasePort = 0;
  72. // 数据库名称;
  73. parameters.DatabaseName = "db";
  74. // 数据库账号;
  75. parameters.DatabaseAccount = "sa";
  76. // 数据库密码;
  77. parameters.DatabasePassword = "ly1234";
  78. // 初始化连接串;
  79. parameters.InitConnectParameters();
  80. // 打印出连接串;
  81. System.Diagnostics.Debug.Write(parameters.ConnectionString + "\n", "正常连接串");
  82. System.Diagnostics.Debug.Write(parameters.MasterConnectionString + "\n", "Master连接串");
  83. System.Diagnostics.Debug.Write(parameters.TrustedConnectionString + "\n", "本地信任连接串");
  84. // 创建一个连接对象;
  85. try
  86. {
  87. System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(parameters.ConnectionString);
  88. connection.Open();
  89. Console.WriteLine("成功打开连接\n");
  90. }
  91. catch ( Exception e )
  92. {
  93. Console.WriteLine(e.Message);
  94. }
  95. }
  96. /// <summary>
  97. /// 初始化数据库连接串;
  98. /// </summary>
  99. public static void InitConnection()
  100. {
  101. // 数据库服务地址;
  102. Parameters.DatabaseServer = "127.0.0.1";
  103. // 数据库服务地址端口号;
  104. Parameters.DatabasePort = 0;
  105. // 数据库名称;
  106. Parameters.DatabaseName = "db";
  107. // 数据库账号;
  108. Parameters.DatabaseAccount = "sa";
  109. // 数据库密码;
  110. Parameters.DatabasePassword = "ly1234";
  111. // 初始化连接串;
  112. Parameters.InitConnectParameters();
  113. // 该函数未完成,不建议使用(当前使用结果与上一句一致);
  114. Parameters.InitConnectParameters(
  115. Parameters.DatabaseServer,
  116. Parameters.DatabaseName,
  117. Parameters.DatabaseAccount,
  118. Parameters.DatabasePassword,
  119. Parameters.DatabasePort, 100, 5, 300);
  120. }
  121. public static void QueryWithCommandText()
  122. {
  123. try
  124. {
  125. // 查询数据集: 不使用参数化, 直接语句查询;
  126. System.Data.DataTable dt = SQLHelper.SqlHelper.ExecuteDataset(Parameters.ConnectionString, System.Data.CommandType.Text, "select * from dindan where time1 > '2016-01-01'").Tables[0];
  127. if ( dt != null && dt.Rows.Count != 0 )
  128. {
  129. for ( int i = 0; i < dt.Rows.Count; i++ )
  130. {
  131. Console.WriteLine("{0}, {1}, {2}\n", dt.Rows[i]["id"], dt.Rows[i]["name1"], dt.Rows[i]["name2"]);
  132. }
  133. }
  134. }
  135. catch ( Exception e )
  136. {
  137. Console.WriteLine(e.Message);
  138. }
  139. }
  140. public static void QueryWithParameters()
  141. {
  142. try
  143. {
  144. // 查询数据集: 使用参数化;
  145. System.Data.SqlClient.SqlParameter[] sqlParameters =
  146. {
  147. new System.Data.SqlClient.SqlParameter("@time1", "2016-01-01"),
  148. new System.Data.SqlClient.SqlParameter("@taoxijiage", "500")
  149. };
  150. System.Data.DataTable dt = SQLHelper.SqlHelper.ExecuteDataset(
  151. Parameters.ConnectionString,
  152. System.Data.CommandType.Text,
  153. "select * from dindan where time1 > @time1 and taoxijiage > @taoxijiage",
  154. sqlParameters).Tables[0];
  155. if ( dt != null && dt.Rows.Count != 0 )
  156. {
  157. for ( int i = 0; i < dt.Rows.Count; i++ )
  158. {
  159. Console.WriteLine("{0}, {1}, {2}, {3}\n", dt.Rows[i]["id"], dt.Rows[i]["name1"], dt.Rows[i]["name2"], dt.Rows[i]["taoxijiage"]);
  160. }
  161. }
  162. }
  163. catch ( Exception e )
  164. {
  165. Console.WriteLine(e.Message);
  166. }
  167. }
  168. /// <summary>
  169. /// 指定表名是否存在;
  170. /// </summary>
  171. /// <param name="tableName"></param>
  172. /// <returns></returns>
  173. public static bool IsTableExists( string tableName )
  174. {
  175. string strSQL = "select count(*) from sysobjects where id = object_id(N'[" + tableName + "]') and OBJECTPROPERTY(id, N'IsUserTable') = 1";
  176. object obj = SQLHelper.SqlHelper.ExecuteScalar(Parameters.ConnectionString, System.Data.CommandType.Text, strSQL);
  177. if ( (Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)) )
  178. return false;
  179. return (int.Parse(obj.ToString()) > 0) ? true : false;
  180. }
  181. /// <summary>
  182. /// 指定表的字段是否存在;
  183. /// </summary>
  184. /// <param name="tableName"></param>
  185. /// <param name="columnName"></param>
  186. /// <returns></returns>
  187. public static bool IsColumnExists( string tableName, string columnName )
  188. {
  189. string strSQL = "select count(1) from syscolumns where [id]=object_id('" + tableName + "') and [name]='" + columnName + "'";
  190. object obj = SQLHelper.SqlHelper.ExecuteScalar(Parameters.ConnectionString, System.Data.CommandType.Text, strSQL);
  191. if ( (Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)) )
  192. return false;
  193. return (int.Parse(obj.ToString()) > 0) ? true : false;
  194. }
  195. /// <summary>
  196. /// 视图是否存在;
  197. /// </summary>
  198. /// <param name="viewName"></param>
  199. /// <returns></returns>
  200. public static bool IsViewExists( string viewName )
  201. {
  202. string strSQL = "SELECT count([object_id]) as objCount FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[" + viewName + "]')";
  203. object obj = SQLHelper.SqlHelper.ExecuteScalar(Parameters.ConnectionString, System.Data.CommandType.Text, strSQL);
  204. if ( (Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)) )
  205. return false;
  206. return (int.Parse(obj.ToString()) > 0) ? true : false;
  207. }
  208. public static void Test( string server, string dbname )
  209. {
  210. Stopwatch stopWatch = new Stopwatch();
  211. stopWatch.Start();
  212. try
  213. {
  214. // 更改参数;
  215. Parameters.DatabaseServer = server;
  216. Parameters.DatabaseName = dbname;
  217. string strSql = @"
  218. --订单的取件状态;
  219. with cte_OrderPickup as(
  220. select OPlist_OrderNumber as OrderNumber
  221. ,OPlist_ViceNumber as ViceNumber
  222. ,max(OPlist_PickupTime) as PickupTime
  223. ,(case
  224. when count(1) = count(case when OPlist_PickupStatus = 0 then '未取' end) then 0 -- 完全未取;
  225. when count(1) != count(case when OPlist_PickupStatus = 1 then '已取' end) then 1 -- 取件中;
  226. when count(1) = count(case when OPlist_PickupStatus = 1 then '已取' end) then 2 -- 全部取完;
  227. end) as PickupStatus
  228. from tb_ErpOrderProductList
  229. where OPlist_Type = '2'
  230. group by OPlist_ViceNumber,OPlist_OrderNumber
  231. ),
  232. -- 订单接单人;
  233. cte_OrderMan as (
  234. select OrdPe_OrderNumber, User_Name from tb_ErpOrdersPerson Left Join tb_ErpUser ON tb_ErpOrdersPerson.OrdPe_OrdersPerson = tb_ErpUser.User_EmployeeID
  235. ),
  236. cte_OrderPerson as (
  237. select
  238. tb1.OrdPe_OrderNumber as OrderNumber
  239. ,stuff((
  240. select ','+ User_Name
  241. from cte_OrderMan as tb0 where tb0.OrdPe_OrderNumber = tb1.OrdPe_OrderNumber
  242. for xml path('')),1,1,'') as OrderPerson
  243. from cte_OrderMan as tb1
  244. group by tb1.OrdPe_OrderNumber
  245. --select dbo.AggregateString([User_Name]+'{$$},') as OrderPerson, OrdPe_OrderNumber as OrderNumber from cte_OrderMan group by OrdPe_OrderNumber
  246. ),
  247. --拍照状态;
  248. cte_PhotographyStatus as(
  249. select max(Ordpg_Number) Ordpg_Number
  250. ,Ordpg_ViceNumber
  251. ,max(Ordpg_Sights) as Ordpg_Sights
  252. ,max(Ordpg_PhotographyTime) as Ordpg_PhotographyTime
  253. ,case when count(case when Ordpg_PhotographyStatus = 1 then '拍照' end) = Count(1) then 1 else 0 end as Ordpg_PhotographyStatus
  254. from tb_ErpOrdersPhotography
  255. group by Ordpg_ViceNumber
  256. )
  257. select
  258. ---------------------------------------------------------------
  259. tb_ErpOrder.ID
  260. ,tb_ErpOrder.Ord_DividedShop 分店编号
  261. ,tb_ErpOrder.Ord_Number 订单号
  262. ,tb_ErpOrder.Ord_Class
  263. ,tb_ErpOrder.Ord_OrderClass
  264. ,tb_ErpOrder.Ord_SinceOrderNumber 自定义订单号
  265. ,tb_ErpOrder.Ord_Type 订单类型
  266. ,tb_ErpOrder.Ord_PhotographyCategory 套系类型
  267. ,tb_ErpOrder.Ord_CustomerSource 客户来源
  268. ,tb_ErpOrder.Ord_SeriesName 套系名称
  269. ,tb_ErpOrder.Ord_SeriesPrice 套系价格
  270. ---------------------------------------------------------------
  271. ,cte_OrderPickup.OrderNumber 订单号
  272. ,cte_OrderPickup.PickupStatus 订单取件状态
  273. ,cte_OrderPickup.PickupTime 订单最大取件日期
  274. ---------------------------------------------------------------
  275. ,cte_OrderPerson.OrderNumber 订单号
  276. ,cte_OrderPerson.OrderPerson 订单接单人
  277. ---------------------------------------------------------------
  278. ,tempTB_AggregationCustomer.GP_OrderNumber 订单号
  279. ,tempTB_AggregationCustomer.[Cus_CustomerSource] 顾客来源
  280. ,tempTB_AggregationCustomer.Cus_Name 顾客姓名
  281. ,tempTB_AggregationCustomer.Cus_Name_py 顾客姓名接单
  282. ,tempTB_AggregationCustomer.Cus_Sex_cs 顾客性别
  283. ,tempTB_AggregationCustomer.Cus_Telephone 顾客电话
  284. ,tempTB_AggregationCustomer.Cus_OpenID 顾客微信号
  285. ---------------------------------------------------------------
  286. ,tb_ErpOrderDigital.Ordv_Number 订单号
  287. ,tb_ErpOrderDigital.Ordv_ViceNumber 副订单号
  288. ,tb_ErpOrderDigital.Ordv_EarlyRepairStatus 初修状态
  289. ,tb_ErpOrderDigital.Ordv_EarlyRepairTime 初修时间
  290. ,tb_ErpOrderDigital.Ordv_FilmSelectionStatus 选片状态
  291. ,tb_ErpOrderDigital.Ordv_FilmSelectionTime 选片时间
  292. ,tb_ErpOrderDigital.Ordv_DesignerStatus 设计状态
  293. ,tb_ErpOrderDigital.Ordv_DesignerTime 设计时间
  294. ,tb_ErpOrderDigital.Ordv_RefinementStatus 精修状态
  295. ,tb_ErpOrderDigital.Ordv_RefinementTime 精修时间
  296. ,tb_ErpOrderDigital.Ordv_LookDesignStatus 看设计状态
  297. ,tb_ErpOrderDigital.Ordv_LookDesignTime 看设计时间
  298. ---------------------------------------------------------------
  299. ,cte_PhotographyStatus.Ordpg_Sights 景点名
  300. ,cte_PhotographyStatus.Ordpg_PhotographyStatus 拍照状态
  301. ,cte_PhotographyStatus.Ordpg_PhotographyTime 拍照时间
  302. ---------------------------------------------------------------
  303. from tb_ErpOrder
  304. Left Join cte_OrderPerson ON cte_OrderPerson.OrderNumber = tb_ErpOrder.Ord_Number
  305. Left Join tb_ErpOrderDigital ON tb_ErpOrder.Ord_Number = tb_ErpOrderDigital.Ordv_Number
  306. Left Join tempTB_AggregationCustomer ON tempTB_AggregationCustomer.GP_OrderNumber = tb_ErpOrder.Ord_Number
  307. Left Join cte_OrderPickup ON cte_OrderPickup.ViceNumber = tb_ErpOrderDigital.Ordv_ViceNumber
  308. Left Join tb_ErpOrdersPhotography ON tb_ErpOrderDigital.Ordv_ViceNumber = tb_ErpOrdersPhotography.Ordpg_ViceNumber
  309. Left Join cte_PhotographyStatus ON cte_PhotographyStatus.Ordpg_ViceNumber = tb_ErpOrderDigital.Ordv_ViceNumber
  310. ";
  311. dataSet = SQLHelper.SqlHelper.ExecuteDataset(Parameters.ConnectionString, System.Data.CommandType.Text, strSql);
  312. }
  313. catch { }
  314. stopWatch.Stop();
  315. long ticksThisTime = stopWatch.ElapsedMilliseconds;
  316. Console.WriteLine("{0}用时{1}", dbname, ticksThisTime);
  317. }
  318. public static void Test2( string server, string dbname )
  319. {
  320. Stopwatch stopWatch = new Stopwatch();
  321. stopWatch.Start();
  322. try
  323. {
  324. // 更改参数;
  325. Parameters.DatabaseServer = server;
  326. Parameters.DatabaseName = dbname;
  327. dataSet = SQLHelper.SqlHelper.ExecuteDataset(Parameters.ConnectionString, System.Data.CommandType.Text, "select * from Vw_OrderProcessCustomer");
  328. }
  329. catch
  330. {
  331. }
  332. stopWatch.Stop();
  333. long ticksThisTime = stopWatch.ElapsedMilliseconds;
  334. Console.WriteLine("{0}用时{1}", dbname, ticksThisTime);
  335. }
  336. public static void Test3( string server, string dbname, string strSql )
  337. {
  338. Stopwatch stopWatch = new Stopwatch();
  339. stopWatch.Start();
  340. try
  341. {
  342. // 更改参数;
  343. Parameters.DatabaseServer = server;
  344. Parameters.DatabaseName = dbname;
  345. dataSet = SQLHelper.SqlHelper.ExecuteDataset(Parameters.ConnectionString, System.Data.CommandType.Text, strSql);
  346. }
  347. catch
  348. {
  349. }
  350. stopWatch.Stop();
  351. long ticksThisTime = stopWatch.ElapsedMilliseconds;
  352. Console.WriteLine("{0}用时{1}", dbname, ticksThisTime);
  353. }
  354. public static void Test4( string server, string dbname )
  355. {
  356. Stopwatch stopWatch = new Stopwatch();
  357. stopWatch.Start();
  358. System.Data.DataTable dt = null;
  359. try
  360. {
  361. // 更改参数;
  362. Parameters.DatabaseServer = server;
  363. Parameters.DatabaseName = dbname;
  364. dataSet = SQLHelper.SqlHelper.ExecuteDataset(Parameters.ConnectionString, System.Data.CommandType.Text, "select * from Vw_OrderProcessCustomerEx");
  365. if ( dataSet != null && dataSet.Tables.Count != 0 )
  366. {
  367. dt = dataSet.Tables[0];
  368. for ( int i = dt.Rows.Count - 1; i > 0; i-- )
  369. {
  370. System.Data.DataRow dr = dt.Rows[i];
  371. if ( dr["Ord_DividedShop"].ToString() != "SSN001" )
  372. {
  373. dt.Rows.RemoveAt(i);
  374. continue;
  375. }
  376. if ( dr["拍照状态"].ToString() != "OK" )
  377. {
  378. dt.Rows.RemoveAt(i);
  379. continue;
  380. }
  381. if ( dr["选片状态"].ToString() != "未选" )
  382. {
  383. dt.Rows.RemoveAt(i);
  384. continue;
  385. }
  386. if ( dr["取件状态"].ToString() == "OK" )
  387. {
  388. dt.Rows.RemoveAt(i);
  389. continue;
  390. }
  391. }
  392. }
  393. }
  394. catch
  395. {
  396. }
  397. stopWatch.Stop();
  398. long ticksThisTime = stopWatch.ElapsedMilliseconds;
  399. Console.WriteLine("{0}用时{1}, {2}, {3}", dbname, ticksThisTime, dataSet.Tables[0].Rows.Count, dt.Rows.Count);
  400. }
  401. public static void Test5( string server, string dbname )
  402. {
  403. string strSql = @" -- 成本核算
  404. ------------------------------------------------------
  405. --订单接单人员;
  406. with cte_OrderMan as (
  407. select OrdPe_OrderNumber, User_Name from tb_ErpOrdersPerson Left Join tb_ErpUser ON tb_ErpOrdersPerson.OrdPe_OrdersPerson = tb_ErpUser.User_EmployeeID
  408. ),
  409. cte_OrderPerson as (
  410. select
  411. tb1.OrdPe_OrderNumber as OrderNumber
  412. ,stuff(
  413. (select ','+ User_Name from cte_OrderMan as tb0
  414. where tb0.OrdPe_OrderNumber = tb1.OrdPe_OrderNumber
  415. for xml path('')),1,1,''
  416. ) as OrderPerson
  417. from cte_OrderMan as tb1
  418. group by tb1.OrdPe_OrderNumber
  419. ),
  420. ------------------------------------------------------
  421. --订单取件状态;
  422. cte_PickupStatus as (
  423. select
  424. max(OPlist_OrderNumber) OrderNumber
  425. ,max(OPlist_PickupTime) PickupTime
  426. ,OPlist_ViceNumber
  427. ,case sum(convert(int,OPlist_PickupStatus))
  428. when 0 then 0 -- 未取;
  429. when count(1) then 2 -- 已取;
  430. else 1 -- 部分取件;
  431. end as PickupStatus
  432. from tb_ErpOrderProductList where OPlist_Type = '2' group by OPlist_ViceNumber
  433. ),
  434. ------------------------------------------------------
  435. cte_Scenery as (
  436. select max(Ordpg_Number) OrderNumber, Ordpg_ViceNumber
  437. ,stuff(
  438. (select ','+ Ordpg_Sights from tb_ErpOrdersPhotography as tb0
  439. where tb0.Ordpg_ViceNumber = tb1.Ordpg_ViceNumber
  440. for xml path('')),1,1,''
  441. ) as 景点
  442. from tb_ErpOrdersPhotography tb1 group by Ordpg_ViceNumber
  443. )
  444. ------------------------------------------------------
  445. select
  446. tb_ErpOrder.Ord_Number
  447. --,tb_ErpOrder.Ord_SinceOrderNumber
  448. --,tb_ErpOrder.Ord_Type
  449. --,tb_ErpOrder.Ord_Class
  450. --,tb_ErpOrder.Ord_OrderClass
  451. ,tb_ErpOrder.Ord_SeriesName 套系名称
  452. ,tb_ErpOrder.Ord_SeriesPrice 套系价格
  453. --,tb_ErpOrder.Ord_Discount
  454. --,tb_ErpOrder.Ord_CreateDateTime
  455. --,tb_ErpOrder.Ord_DividedShop
  456. ------------------------------------------------------
  457. --,tempTB_AggregationCustomer.GP_OrderNumber
  458. ,tempTB_AggregationCustomer.Cus_Name 顾客姓名
  459. --,tempTB_AggregationCustomer.Cus_Name_py
  460. --,tempTB_AggregationCustomer.Cus_Sex_cs
  461. --,tempTB_AggregationCustomer.Cus_Telephone
  462. ------------------------------------------------------
  463. --,cte_OrderPerson.OrderNumber
  464. ,cte_OrderPerson.OrderPerson 接单人
  465. ------------------------------------------------------
  466. ,cte_Scenery.景点
  467. ------------------------------------------------------
  468. --,cte_PickupStatus.OPlist_ViceNumber 子订单
  469. ,cte_PickupStatus.PickupStatus 取件状态
  470. ,cte_PickupStatus.PickupTime 取件时间
  471. ------------------------------------------------------
  472. ,isnull(
  473. (Ord_SeriesPrice + case when (select sum(case when Plu_GoodsCosts <> '' then convert(decimal(10,2),dbo.fn_GetSumArray(Plu_GoodsCosts)) else 0 end) from tb_ErpPlusPickItems where Plu_OrdNumber = Ord_Number) is null then 0
  474. end ),0.00
  475. ) as 套系价格
  476. ,(
  477. isnull((select sum(OPlist_CostPrice * OPlist_ProdQuantity) from tb_ErpOrderProductList where OPlist_Type = '1' And OPlist_OrderNumber = Ord_Number),0) +
  478. isnull((select sum(Ws_ProdCostPrice * Ws_ProdQuantity) from tb_ErpWeddingService where Ws_Number = Ord_Number),0) +
  479. isnull((select sum(Ordpg_CostPrice) from tb_ErpOrdersPhotography where Ordpg_Number = Ord_Number),0) +
  480. isnull((select sum(case when Plu_GoodsCosts <> '' then convert(decimal(10,2),dbo.fn_GetSumArray(Plu_GoodsCosts)) else 0 end) from tb_ErpPlusPickItems where Plu_OrdNumber = Ord_Number),0)
  481. ) AS 套系成本
  482. ,(
  483. select sum(OPlist_CostPrice * OPlist_ProdQuantity) from tb_ErpOrderProductList where OPlist_Type = '1' And OPlist_OrderNumber = Ord_Number
  484. ) as 商品成本
  485. ,(
  486. select sum(Ws_ProdCostPrice * Ws_ProdQuantity) from tb_ErpWeddingService where Ws_Number = Ord_Number
  487. ) as 服务成本
  488. ,(
  489. select sum(Ordpg_CostPrice) from tb_ErpOrdersPhotography where Ordpg_Number = Ord_Number
  490. ) as 景点成本
  491. ,(
  492. select sum(case when Plu_GoodsCosts <> '' then convert(decimal(10,2),dbo.fn_GetSumArray(Plu_GoodsCosts)) else 0 end) from tb_ErpPlusPickItems where Plu_OrdNumber = Ord_Number
  493. ) as 加挑总价
  494. ------------------------------------------------------
  495. from tb_ErpOrder
  496. Left Join tempTB_AggregationCustomer ON tb_ErpOrder.Ord_Number = tempTB_AggregationCustomer.GP_OrderNumber
  497. Left Join cte_OrderPerson ON tb_ErpOrder.Ord_Number = cte_OrderPerson.OrderNumber
  498. Left Join cte_PickupStatus ON tb_ErpOrder.Ord_Number = cte_PickupStatus.OrderNumber
  499. Left Join cte_Scenery ON tb_ErpOrder.Ord_Number = cte_Scenery.OrderNumber
  500. order by tb_ErpOrder.Ord_Number";
  501. Stopwatch stopWatch = new Stopwatch();
  502. stopWatch.Start();
  503. System.Data.DataTable dt = null;
  504. try
  505. {
  506. // 更改参数;
  507. Parameters.DatabaseServer = server;
  508. Parameters.DatabaseName = dbname;
  509. dataSet = SQLHelper.SqlHelper.ExecuteDataset(Parameters.ConnectionString, System.Data.CommandType.Text, strSql);
  510. }
  511. catch
  512. {
  513. }
  514. stopWatch.Stop();
  515. long ticksThisTime = stopWatch.ElapsedMilliseconds;
  516. Console.WriteLine("{0}用时{1}", dbname, ticksThisTime);
  517. }
  518. }
  519. }